是否有必要使用模板参数来引用同一类内部定义?

时间:2013-06-05 11:15:24

标签: c++

这是必要的吗?

 template <typename T>
 class A{
   T*point;
   A<T> someFunction(){} //instead of returning just "A", not "A<T>"
 }

someFunction会隐式返回与正在定义的类相同类型的A吗?因为在课外,你只能将这种类型称为A<float>或类似,所以我认为这在课堂上也是必要的。我发现它没有&lt;&gt;而编译所以这让人想知道省略括号是否安全。

2 个答案:

答案 0 :(得分:27)

省略类定义中的模板参数是有效且安全的C ++。事实上,这是一种很好的做法,因为您可能稍后会使用默认值添加其他模板参数。您可能忘记将A<T>更改为A<T,SomeOtherParameter>并获得奇怪的编译时错误。然后只需返回A即可。

答案 1 :(得分:19)

您可以说A<T>或仅AA表示与A<T>相同。这是因为14.6.1 / 1:

  

与普通(非模板)类一样,类模板具有注入类名(第9节)。 inject-name-name [...]等同于 template-name ,后跟<>中包含的类模板的 template-parameters