我分配给一个std::function<double()>
lambda表达式。 该段工程
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的bug(我用4.7.2)? 否则,为什么会有这个限制的标准是什么?