标准N4296::14.7.1/1说:
类模板专门化的隐式实例化导致声明的隐式实例化,而不是类成员函数、成员类、作用域成员枚举、静态数据成员和成员模板的定义、默认参数或异常规范的隐式实例化;
然后,让我们考虑以下代码:
template <class T>
class A
{
void foo(){ }
};
A<int> a; //Implicit instantiation here
int main(){ }因此,当模板被隐式实例化时,它实际上是在一个没有任何成员函数的类中集成的,因为我们没有使用它。是真的吗?
发布于 2015-03-25 18:56:29
该类具有声明但尚未定义的成员函数。
这在非模板类中也是允许的;(非虚拟的)成员函数只需要一个定义,如果您使用它。
因此,在模板中,函数声明在实例化时必须是有效的,但函数体还不需要工作。
https://stackoverflow.com/questions/29263302
复制相似问题