Daha iyi nasıl tanımlanacağını bilmiyorum. İşte kod. Bu gcc 4.9.2 (Debian 8.5) üzerinde derleyici başarısız, daha önceki bir sürümü derlenmiş düşünüyorum. Sorun, yalnızca daha sonra bildirilen yapının üyesine lambda kurulumunda varsayılan bir argüman olarak erişirsem ortaya çıkar. Gösterilen diğer vakalar çalışır.Lambda ayarında iki adımlı bildirilen üyeye erişim
// 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_', yakalanmadı. Bu 'dir. – aschepler
@aschepler Güzel çağrı. Sanırım bu şimdi neler olup bittiğini daha iyi gösteriyor. – NathanOliver