Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
200 views
in Technique[技术] by (71.8m points)

c++ - Is it necessary to use template parameters to refer to same class inside definition?

Is this necessary:

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

Will someFunction implicitly return the A of the same type as the class being defined? Because outside the class, you can only refer to this type as A<float> or similar, so I'd assumed this was necessary inside the class as well. I discovered it compiles without the <> so this made wonder if it is a safe habit to omit the brackets.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It's valid and safe C++ to omit the template parameters inside the class definition. In fact it's good practice, since you might add other template parameters with default values later on. You might forget to change A<T> to A<T,SomeOtherParameter> and get strange compile-time errors. Then just returning A will do it.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...