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

c++

Solution

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.

Problem

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.

Original source