के साथ काम नहीं करता है, मैं std::function<double()>
लैम्बडा अभिव्यक्ति को असाइन कर रहा हूं। यह टुकड़ा काम करता हैटर्नरी ऑपरेटर लैम्ब्डा फ़ंक्शंस
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...>
यह एक जीसीसी बग है (मैं 4.7 उपयोग कर रहा हूँ .2)? अन्यथा मानक में यह सीमा क्यों है?
उत्तर के लिए +1, "यह/अन्य के साथ क्लीनर" के लिए एक और +1 है। –