【发布时间】:2019-10-22 10:16:57
【问题描述】:
考虑下面的例子:
template <typename T>
class SomeClass {
// rest of the definition ...
SomeClass<T>& function1() {
// ...
return *this;
}
SomeClass& function2() {
// ...
return *this;
}
}
上面两个函数的返回值有区别吗?如果不是,应该首选哪一个?
【问题讨论】:
-
没有区别,通常首选第二个版本,代码重复较少。
-
附注:即使在类模板定义之外,您也不必使用第一种形式。这是尾随返回类型的一项不错的功能
auto SomeClass<T>::function2() -> SomeClass&
标签: c++ templates generic-programming injected-class-name