我有一个简单的lambda:
std::variant<int, char> myLambda = []() { // no suitable user-defined conversion from "type" to "std::variant<int, char>" exists
std::variant<int, char> res;
if (true)
{
res = 1;
}
else
{
res = 'c';
}
return res;
};但是它不能编译,从而产生错误no suitable user-defined conversion from "type" to "std::variant<int, char>" exists。我做错了什么?
发布于 2019-08-30 20:30:24
lambda表达式类型错误。您正在尝试绑定到std::variant<int, char>。Lambda表达式类型名称是impl定义的。使用auto
auto processProjectFile = []() {
std::variant<int, char> res;
if (true) {
res = 1;
} else {
res = 'c';
}
return res;
};或者,您可以将lambda类型强制转换为std::function,用std::function<std::variant<int, char>(void)>替换auto。
但是,如果您打算调用lambda,只需将末尾的};替换为}();即可。
发布于 2019-08-30 20:34:26
你的意思是
std::variant<int, char> v = []() {
std::variant<int, char> res;
if (true)
{
res = 1;
}
else
{
res = 'c';
}
return res;
}();
^^^或者你的意思是
auto myLambda = []() {
std::variant<int, char> res;
if (true)
{
res = 1;
}
else
{
res = 'c';
}
return res;
};Lambda表达式具有独特的类型。
https://stackoverflow.com/questions/57726745
复制相似问题