【发布时间】:2014-08-18 01:24:30
【问题描述】:
对于在 C++11 中调用模板化函数的要求,我有点困惑,其中为模板参数提供了默认值。
例如,假设我有以下模板化函数
template <class T = double> void foo()
{
/* Do something */
}
我想在我的代码中的某个地方调用它。这些都是有效的调用吗?
foo(); //Is this OK?
foo<>();
foo<int>();
它可以在 GCC 4.7.2 中正常编译,但我不确定它是否是严格正确的 C++。我想我的不确定性可能来自使用默认模板创建模板类的实例时使用空尖括号<> 的要求,如下所述:
但我认为在我的情况下,函数括号 () 是关键区别吗?
【问题讨论】:
-
foo()与foo<double>()相同。默认模板参数是你自己加的吧? -
我知道它们是相同的,我真的只是想知道为什么这里不需要 而是用于模板类(请参阅下面我对 Cubbi 答案的评论)。