114得票4回答
新的C++11程序是否应该将尾返回类型语法风格作为默认值?

C++11 支持新的函数语法:auto func_name(int x, int y) -> int; 目前该函数的声明应为:int func_name(int x, int y); 这种新风格似乎还没有被广泛采用(例如在gcc stl中)。 然而,在新的C++11程序中,这种新风格是...

57得票1回答
'auto f(params) -> decltype(..., void())' 中的 'void()' 是什么意思?

我在这里找到了以下代码: auto f(T& t, size_t n) -> decltype(t.reserve(n), void()) { .. } 在我阅读的所有文档中,我被告知decltype的签名如下: decltype( entity ) 或者 de...

42得票1回答
函数的返回类型能否从函数内部获取?

在函数内部能否以简单的方式获取函数的返回类型?例如,给定以下代码: template <typename P> static inline auto foo(P p) -> typename std::remove_reference<decltype(*p)>...

35得票1回答
在C++11函数中使用尾返回类型的优势

在C++11中指定尾置返回类型相较于普通返回类型的优势是什么?看看这里的foo1与foo2:int foo1() { return 1; } auto foo2() -> int { return 1; } int main() { foo1(...

27得票3回答
在lambda表达式中,是否有可能返回一个T类型的对象的引用而无需使用尾随返回类型语法?

考虑以下代码片段: struct T {}; std::function<T&(T&)> f = [](T& obj) -> T& { return obj; }; 我想知道是否有可能推断出正确的lambda返回类型(即T&)...

25得票1回答
“auto a_class::f(...) -> T const”在语法上是否存在歧义?

下面这个成员函数原型在C++11中应该如何解释? class C { public: auto f(...) -> T const; } 在我看来,这个函数可以是类C的const成员函数,也可以是返回类型为T的const值的非const成员函数。 我知道我可以写成以下形式:...

19得票1回答
返回类型推导、decltype和const特性

我正在快乐地尝试新的尾返回类型,但在这段(简化后的)代码中遇到了问题#include <list> class MyContainer{ std::list<int> ints; auto begin( ) -> decltype(ints.begin...

19得票2回答
在尾返回类型语法中,是否可以直接使用参数值(而不是其类型,而是值本身)?

考虑这个最简单的例子:template <int> struct bar { }; int main() { [](auto i) -> bar<i> { return {}; }; } 甚至可以说:template <int> struc...

18得票3回答
为什么在尾部返回类型中使用该运算符不会编译?

我试图在另一个函数的尾随返回类型中重用运算符的返回类型,但不幸的是clang没有接受它。struct A { int operator[](int); auto at(int i) -> decltype((*this)[i]); }; Clang说我的类没有operator[]...

17得票1回答
lambda尾随返回类型auto的用途是什么?

在 []() -> auto { return 4; } 中添加 -> auto 的作用是什么? 对我来说,这与 []() { return 4; } 没有区别。