C++ 是否需要使用模板参数来引用定义内的同一类?

C++ 是否需要使用模板参数来引用定义内的同一类?,c++,C++,是否有必要: template <typename T> class A{ T*point; A<T> someFunction(){} //instead of returning just "A", not "A<T>" } 模板 甲级{ T*点; someFunction(){}//而不是只返回“A”,而不是“A” } someFunction是否会隐式返回与所定义类相同类型的A?因为在类之外,您只能将此类型称为A或类似类型,所以我

是否有必要:

 template <typename T>
 class A{
   T*point;
   A<T> someFunction(){} //instead of returning just "A", not "A<T>"
 }
模板
甲级{
T*点;
someFunction(){}//而不是只返回“A”,而不是“A”
}

someFunction
是否会隐式返回与所定义类相同类型的
A
?因为在类之外,您只能将此类型称为
A
或类似类型,所以我假设在类内部也需要这样做。我发现它没有编译,这就使人怀疑是否有一个安全的习惯来省略括号。

< P>它是有效和安全的C++,省略了类定义中的模板参数。事实上,这是一个很好的实践,因为您以后可能会添加其他具有默认值的模板参数。您可能会忘记将
A
更改为
A
,并出现奇怪的编译时错误。然后只需返回
A
即可

你可以说
A
或只是
A
,而
A
的意思与
A
相同。这是因为14.6.1/1:

像普通(非模板)类一样,类模板有一个注入的类名(第9条)。注入的类名[…]相当于模板名,后跟
中包含的类模板的模板参数