int uncalledFunction() { } template int uncalledTemplateFunction() { } class NonVirtualClass { public: NonVirtualClass() { } ~NonVirtualClass() { } void inClassFunction() { } void outOfClassFunction(); template void templateFunction() { } template void templateOutOfClassFunction(); }; void NonVirtualClass::outOfClassFunction() { } template void NonVirtualClass::templateOutOfClassFunction() { } class NonVirtualClass2 { public: NonVirtualClass2(); ~NonVirtualClass2(); }; NonVirtualClass2::NonVirtualClass2() { } NonVirtualClass2::~NonVirtualClass2() { } class VirtualClass { public: VirtualClass() { } virtual ~VirtualClass() { } virtual void inClassFunction() { } virtual void outOfClassFunction(); template void templateFunction() { } template void templateOutOfClassFunction(); }; void VirtualClass::outOfClassFunction() { } template void VirtualClass::templateOutOfClassFunction() { } template class TemplateClass { public: TemplateClass() { } ~TemplateClass() { } void inClassFunction() { } void outOfClassFunction(); template void templateFunction() { } template void templateOutOfClassFunction(); }; template void TemplateClass::outOfClassFunction() { } template template void TemplateClass::templateOutOfClassFunction() { } template class VirtualTemplateClass { public: VirtualTemplateClass() { } virtual ~VirtualTemplateClass() { } virtual void inClassFunction() { } virtual void outOfClassFunction(); template void templateFunction() { } template void templateOutOfClassFunction(); }; template void VirtualTemplateClass::outOfClassFunction() { } template template void VirtualTemplateClass::templateOutOfClassFunction() { } int main() { /* uncalledFunction(); uncalledTemplateFunction(); NonVirtualClass nvo; nvo.inClassFunction(); nvo.outOfClassFunction(); nvo.templateFunction(); nvo.templateOutOfClassFunction(); NonVirtualClass2 nvo2; VirtualClass vo; vo.inClassFunction(); vo.outOfClassFunction(); vo.templateFunction(); vo.templateOutOfClassFunction(); TemplateClass to; to.inClassFunction(); to.outOfClassFunction(); to.templateFunction(); to.templateOutOfClassFunction(); VirtualTemplateClass vto; vto.inClassFunction(); vto.outOfClassFunction(); vto.templateFunction(); vto.templateOutOfClassFunction(); */ return 0; }