具有三元运算符的函数类型
function type with ternary operator
我试试这个代码:
int a=1;
std::function<int (int, int)> getM = a?
[](int x, int y) {
return (x+y);
} :
[](int x, int y) {
return (x*y);
};
cout<<getM(1,2);
在visual studio中给出错误:
错误 C2446:“:”: 没有从 'wmain::' 到 'wmain::' 的转换
1> 没有可用的可以执行此转换的用户定义转换运算符,或者无法调用该运算符
在 GCC 中编译。我想 GCC 是正确的行为,但我不确定。在 VS2013 上还有哪些其他选择?
我可以确认它也不是使用 VS 2015 update 3 构建的。
What are other options?
嗯,标准 if/else 始终是任何三元运算的替代方法:
std::function<int (int, int)> getM;;
if (a)
getM = [](int x, int y) { return (x + y); };
else
getM = [](int x, int y) { return (x * y); };
我试试这个代码:
int a=1;
std::function<int (int, int)> getM = a?
[](int x, int y) {
return (x+y);
} :
[](int x, int y) {
return (x*y);
};
cout<<getM(1,2);
在visual studio中给出错误: 错误 C2446:“:”: 没有从 'wmain::' 到 'wmain::' 的转换 1> 没有可用的可以执行此转换的用户定义转换运算符,或者无法调用该运算符
在 GCC 中编译。我想 GCC 是正确的行为,但我不确定。在 VS2013 上还有哪些其他选择?
我可以确认它也不是使用 VS 2015 update 3 构建的。
What are other options?
嗯,标准 if/else 始终是任何三元运算的替代方法:
std::function<int (int, int)> getM;;
if (a)
getM = [](int x, int y) { return (x + y); };
else
getM = [](int x, int y) { return (x * y); };