| Код | #include <stdio.h>
class MyClass { };
class MyClass2 : public MyClass { };
template <class A> struct calc { static void do_something() { printf("common\n"); } };
template <> struct calc<MyClass> { static void do_something() { printf("class MyClass\n"); } };
int main() { calc<int>::do_something(); calc<MyClass>::do_something(); calc<MyClass2>::do_something(); }
|
в данном примере calc<MyClass2>::do_something выполняет то же, что и calc<int>::do_something. А как бы так сделать, что бы раз я объявил специализацию struct calc<MyClass>, то и calc<MyClass2> в нее же попала, т.к. MyClass2 является наследником от MyClass.
|