यह नहीं पता कि इसे बेहतर तरीके से कैसे वर्णन किया जाए। कोड यहाँ है। यह जीसीसी 4.9.2 (डेबियन 8.5) पर कंपाइलर में विफल रहता है, मुझे लगता है कि यह पिछले संस्करण में संकलित है। समस्या तब होती है जब मैं बाद में घोषित संरचना के सदस्य को लैम्ब्डा सेटअप में डिफ़ॉल्ट तर्क के रूप में एक्सेस करता हूं। अन्य दिखाए गए मामले काम करते हैं।लैम्ब्डा सेटअप में दो-चरण घोषित सदस्य तक पहुंच
// Test program
class C1
{
private:
// Forward-declared
struct S_Private;
S_Private* d_;
public:
void func();
};
struct C1::S_Private
{
int a;
};
void C1::func()
{
// This will work
int test = d_->a;
// Accessing the d_->a as a default argument in lambda setup
// will NOT work:
// error: invalid use of non-static data member ‘C1::d_’
auto some_lambda = [&](int arg = d_->a)
{
// This will also work
int test2 = d_->a;
};
}
int main(void)
{
}
'd_' कैप्चर नहीं किया गया है। 'यह' है। – aschepler
@aschepler अच्छी कॉल। मुझे लगता है कि यह अब बेहतर हो रहा है कि क्या हो रहा है। – NathanOliver