template class C { void fun(T) { return; } }; template class D { public: void fun(T) { return; } }; template class E { public: void fun(T) { return; } };