निम्न कोड के लिए:lambdas पर कब्जा करने की आवश्यकता होती है 'इस' स्थिर सदस्य समारोह कॉल करने के लिए?
struct B
{
void g()
{
[]() { B::f(); }();
}
static void f();
};
जी ++ 4.6 त्रुटि देता है:
test.cpp: In lambda function:
test.cpp:44:21: error: 'this' was not captured for this lambda function
(दिलचस्प है, जी ++ 4.5 कोड ठीक संकलित)।
इस छ ++ 4.6 में एक बग है, या यह वास्तव में 'इस' पैरामीटर एक स्थिर सदस्य समारोह कॉल करने के लिए सक्षम होने के लिए कब्जा करने के लिए आवश्यक है? मुझे नहीं लगता कि यह क्यों होना चाहिए, मैंने B::
के साथ कॉल भी योग्यता प्राप्त की।
पर ठीक संकलित करेगा जो एक बग होगा। –
अभी भी जीसीसी 4.7.2 में एक बग। एक कैप्चर के रूप में 'यह' जोड़ना अभी भी काम करता है। –
जीसीसी 4.8 में फिक्स्ड। – akim