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条)。注入的类名[…]相当于模板名,后跟
中包含的类模板的模板参数