C'è un modo per testare std::is_base_of<A, B>
quando A
è una classe template?std :: is_base_of per classi template
template <typename X, typename Y> class A {};
template <typename X> class B : public A<X, char> {};
voglio provare qualcosa di simile in modo statico, std::is_base_of<A, B<int>>
significato, B
è derivato da qualsiasi specializzazione del A
. (Per renderlo più generale, diciamo che non sappiamo il modo B
specializza A
, vale a dire B <X> deriva da una < X, char >)
Un modo per risolvere sarebbe quello di un derivato da una classe (non modello) dire C
, quindi controllare std::is_base_of<C, B<int>>
. Ma c'è un altro modo per farlo?
'A' non è un tipo. Non puoi farlo, ma puoi fare 'std :: is_base_of , B>' –
Arunmu
Tipo di domanda simile Ho risposto qualche tempo fa. http://stackoverflow.com/questions/34670375/how-to-enforce-template-parameter-class-to-derive-from-super-with-an-anonymous-t/34670684#34670684 – Arunmu
Would 'my_is_base_of , char > 'essere un uso ragionevole per te? – TartanLlama