给定以下代码片段:
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/