//Base.h template<class T> struct Subject{}; //Foo.h #include "Base.h" struct Foo: public Base<Foo> { // Foo():Base<Foo>(){}; //если раскомментировать, то все окей Foo(); //когда реализация в Foo.cpp, то проблема при линковке: Undefined Reference }; //Foo.cpp #include "Foo.h" Foo::Foo():Base<Foo>() //вот здесь Undefined Reference Base<Foo> {} //main.cpp int main() { Foo foo; }