Tôi đang gán cho một biểu thức lambda std::function<double()>
. đoạn này hoạt độngtoán tử ternary không hoạt động với các hàm lambda
if(fn_type==exponential)
k.*variable = [=,&k](){ return initial*exp(-k.kstep*par); };
else
k.*variable = [=,&k](){ return initial*pow(k.kstep, par); };
trong khi nếu tôi muốn sử dụng các nhà điều hành ternary
k.*variable = (fn_type==exponential ? [=,&k](){ return initial*exp(-k.kstep*par); } : [=,&k](){ return initial*pow(k.kstep, par); });
tôi nhận được lỗi sau:
error: no match for ternary ‘operator?:’ in <awfully long template error, because this whole thing is in a class defined in a function...>
này một lỗi gcc Is (Tôi đang sử dụng 4,7 .2)? Nếu không thì tại sao có giới hạn này trong tiêu chuẩn?
+1 cho câu trả lời, +1 khác cho "nó sạch hơn với if/else". –