【发布时间】:2012-10-08 03:51:06
【问题描述】:
我正在为 std::function<double()> 分配一个 lambda 表达式。这个 sn-p 有效
if(fn_type==exponential)
k.*variable = [=,&k](){ return initial*exp(-k.kstep*par); };
else
k.*variable = [=,&k](){ return initial*pow(k.kstep, par); };
如果我想使用三元运算符
k.*variable = (fn_type==exponential ? [=,&k](){ return initial*exp(-k.kstep*par); } : [=,&k](){ return initial*pow(k.kstep, par); });
我收到以下错误:
error: no match for ternary ‘operator?:’ in <awfully long template error, because this whole thing is in a class defined in a function...>
这是一个 gcc 错误吗(我使用的是 4.7.2)?不然为什么标准里有这个限制?
【问题讨论】:
标签: c++ lambda c++11 conditional-operator