【发布时间】:2014-02-20 03:19:02
【问题描述】:
我想自动推断我正在编写的函数的返回类型。
例子:
std::vector<int> test(){
decltype(this_function) ret;
ret.push_back(5);
ret.push_back(9);
return ret;
}
到目前为止,我取得的最好成绩是
std::vector<int> test(){
decltype(test()) ret;
ret.push_back(5);
ret.push_back(9);
return ret;
}
哪个有效但是:
-
如果我更改函数名称,我必须更改
decltype(test())进入
decltype(name()) -
如果我更改函数参数,我也必须更改
decltype(test())进入
decltype(test(param1, param2))
有没有更优雅的方式来做同样的事情?
【问题讨论】:
-
FWIW,在 C++14 中,您将能够执行 the opposite。
-
我有时想知道为什么人们会如此努力地不从前一行复制几个字符......你认为这会更具可读性吗?您是否假设可以在不查看定义的情况下更改声明中的返回类型?
-
@jrok:我不会做太多宣传,人们可能想要使用它! [而且我不是特别喜欢这个主意 :)]
-
@jrok 我已经看到了,但我更喜欢这种方法。如果有一种干净的方法可以做到这一点。这样你仍然可以在标题中返回类型。 ..这对于可读性非常重要恕我直言..
-
@DavidRodríguez-dribeas 我会说概念(如果它们进入 C++ 17)是未来标准头文件中的限制因素,而
auto和decltype与 @987654330 相比更方便@ 在模板中定义类型。
标签: c++ c++11 types decltype type-deduction