函数或参数作为模板参数?

时间:2016-09-10 21:43:54

标签: c++ templates

我看到了以下代码:

template<class T, T t = T()>
class A {
    t > T()
};

我对第二个模板参数(t = T())感到困惑。这是一个返回T或非类型参数的函数吗?比较t和T()是什么意思?

1 个答案:

答案 0 :(得分:2)

第二个参数是非类型参数,但它不是函数。

T t = T()

只需指定模板参数t的默认值。

您可以使用以下方法创建模板实例:

A<int> a1;  // Equivalent to A<int, 0>
A<int, 10> a2;

A<bool> a3;  // Equivalent to A<bool, false>
A<bool, true> a4;

该行

t > T()

根本没有意义。