c++ - 是否可以在不使用尾随返回类型语法的情况下通过 lambda 引用返回类型为 T 的对象?

标签 c++ c++11 lambda trailing-return-type

给定以下代码片段:

struct T {}; 

std::function<T&(T&)> f = [](T& obj) -> T& { return obj; };

我想知道是否可以在不使用 尾随返回类型语法的情况下推断出正确的 lambda 返回类型(即 T&)。

显然,如果我删除 -> T& 则会发生编译时错误,因为推导的类型将是 T

最佳答案

在 C++14 中,你可以使用 [](T& obj) -> decltype(auto) { return obj; }。在这种情况下,f 的返回类型是从 obj 的声明类型推导出来的(即在这种情况下为 T&)。

关于c++ - 是否可以在不使用尾随返回类型语法的情况下通过 lambda 引用返回类型为 T 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40977730/

相关文章:

c++ - 如何打印出Mat图像中的像素值

c++ - strstr 是否有反向功能

c++ - 为什么在释放由 apriltags image_u8_create() 分配并存储在 C++ 指针的 2D vector 中的内存时出现错误?

c++ - 声明普通类和类模板的静态数据成员

c++ - 带有 unique_ptr 参数回归的 Visual Studio 2012 lambda?

c++ - 在 map 中使用 lambda 作为比较器时的匿名类型警告

c++11 - std::is_integral 是如何实现的?

c++ - 显式指定通用 lambda 的 operator() 模板参数是否合法?

c# - Lambda表达式中的 '@'是什么意思

Java 8 API 静态方法在非空输入上运行函数,或返回 nullValue