C++14中用于lambda的std::result_of的限制是指对于lambda函数中的函数调用表达式,使用std::result_of来获取其返回类型时存在的一些限制。
具体来说,C++14中std::result_of无法正确推断lambda函数的返回类型,这是由于lambda函数在编译时生成一个闭包类型,而std::result_of无法正确地推断闭包类型的返回类型。
为了解决这个问题,C++14标准引入了一个新的特性,即使用decltype(auto)来代替std::result_of来获取lambda函数的返回类型。使用decltype(auto)可以正确地推断闭包类型的返回类型,并且支持对返回类型进行进一步的处理和使用。
下面是C++14中使用decltype(auto)来获取lambda函数返回类型的示例代码:
auto lambda = [](int a, int b) -> int {
return a + b;
};
decltype(auto) result = lambda(1, 2);
在上面的示例代码中,我们定义了一个lambda函数,并使用decltype(auto)来获取其返回类型。然后,我们可以像普通函数一样调用lambda函数,并将返回值赋给result变量。
对于C++14中lambda函数的返回类型推断,还有一些其他的限制,比如不支持对包含泛型参数的函数模板进行推断。但总体来说,使用decltype(auto)可以解决大部分关于lambda函数返回类型推断的问题。
关于C++14中lambda函数返回类型推断的更多细节,你可以参考腾讯云的C++开发文档中有关lambda函数的介绍:C++开发文档 - lambda函数
领取专属 10元无门槛券
手把手带您无忧上云