Здравствуйте, Tilir, Вы писали:
T>Хочется вообще избавиться от виртуальных функций, в чистом виде заменив рантайм-полиморфизм шаблонным. В этом варианте она все таки осталась.
Тогда так. Но в рантайме это будет работать одинаково т.к. параметризовать можно только до компиляции кода. Т.е. ты не получаешь полиморфного поведения в рантайме.
template<typename T>
struct entryByFile: public T
{
int entry()
{
return T::foo();
}
};
struct fileA
{
int foo() {std::cout<<"DO something"<<std::endl; return 0;}
};
struct fileB
{
int foo() {std::cout<<"DO nothing"<<std::endl; return 0;}
};
int main()
{
return entryByFile<fileB>().foo();
}