标准N4296::14.7.1/1
说:
类模板特化的隐式实例化导致 声明的隐式实例化,但不是 定义,默认参数或例外规范 类成员函数,成员类,作用域成员枚举, 静态数据成员和成员模板;
让我们考虑以下代码:
template <class T>
class A
{
void foo(){ }
};
A<int> a; //Implicit instantiation here
int main(){ }
因此,当模板被隐式实例化时,它实际上在一个没有任何成员函数的类中实例化,因为我们没有使用它。这是真的吗?
答案 0 :(得分:0)
该类具有已声明但尚未定义的成员函数。
在非模板类中也允许这样做;如果使用(非虚拟)成员函数,则只需要定义。
因此,在模板中,函数声明在实例化时必须是有效的,但函数体还不需要工作。