13
ラムダ式std::function<double()>
に割り当てています。ラムダ関数で三項演算子が機能しない
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を使用しています:私は、三項演算
k.*variable = (fn_type==exponential ? [=,&k](){ return initial*exp(-k.kstep*par); } : [=,&k](){ return initial*pow(k.kstep, par); });
を使用したい場合、私は次のエラーを取得するのに対し、このスニペットは
if(fn_type==exponential)
k.*variable = [=,&k](){ return initial*exp(-k.kstep*par); };
else
k.*variable = [=,&k](){ return initial*pow(k.kstep, par); };
の作品2)?さもなければ、標準にこの限界があるのはなぜですか?
+1の回答、もう1つの「それはif/elseのクリーナーです」 –