可以在没有成员的情况下实例化类模板吗?

joh*_*ers 6 c++ templates

维基百科的文章这样说:

实例化类模板不会导致其成员定义被实例化.

我无法想象C++中的任何类是否被实例化,无论是否来自模板,那些类成员都没有被实例化?

Jer*_*fin 9

许多早期的C++编译器实例化了所有成员函数,无论你是否曾经调用它们.

例如,考虑std::list具有sort成员函数的问题.使用当前正常运行的编译器,您可以实例化list不支持比较的类型.如果您尝试使用list::sort,它将失败,因为您不支持比较.只要你没有调用sort那个列表,它就可以了,因为list<T>::sort除非你调用它,否则不会被实例化.

然而,对于那些较旧的,运行不良的编译器,即使你从未使用它,尝试创建list<T>意味着list<T>::sort实例化.的存在list::sort意味着你需要实现<T,只是为了创造一个list<T>,即使你从来没有实际使用sort该类型的名单上都没有.