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

joh*_*ers 21 c++

这是必要的:

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

someFunction隐式返回与A正在定义的类相同的类型吗?因为在课外,你只能将这种类型称为A<float>或类似,所以我认为这在课堂上也是必要的.我发现它在没有<>的情况下进行编译,所以如果省略括号是一个安全的习惯,这就太奇怪了.

Ral*_*zky 27

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


Ker*_* SB 19

你可以说A<T>或者只是A,并且A意思相同A<T>.这是因为14.6.1/1:

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