给出一个类模板:
template <typename T>
class my_class
{
public:
my_class& test1() { return *this; }
// OR
my_class<T>& test2() { return *this; }
}
test1
和test2
的返回类型之间是否存在差异?
答案 0 :(得分:7)
test1
和test2
的返回类型之间是否存在差异?
没有。有一个名为injected-class-name的概念。在my_class<T>
的正文中,名称my_class
指的是完整类型my_class<T>
。
我们甚至可以将其归结为合乎逻辑的结论并添加:
my_class::my_class::my_class::my_class& test4() { return *this; }
答案 1 :(得分:2)
不,在my_class<T>
范围内,my_class
是my_class<T>
的缩写。