模板类成员函数instatitation

时间:2015-03-25 18:10:31

标签: c++ templates

标准N4296::14.7.1/1说:

  

类模板特化的隐式实例化导致   声明的隐式实例化,但不是   定义,默认参数或例外规范   类成员函数,成员类,作用域成员枚举,   静态数据成员和成员模板;

让我们考虑以下代码:

template <class T>
class A
{
    void foo(){ }
};

A<int> a; //Implicit instantiation here

int main(){ }

因此,当模板被隐式实例化时,它实际上在一个没有任何成员函数的类中实例化,因为我们没有使用它。这是真的吗?

1 个答案:

答案 0 :(得分:0)

该类具有已声明但尚未定义的成员函数。

在非模板类中也允许这样做;如果使用(非虚拟)成员函数,则只需要定义。

因此,在模板中,函数声明在实例化时必须是有效的,但函数体还不需要工作。