Bugün bu gibi bazı kod gördüm: Doğru kod doğruysa neden'const decltype ((a))' bir const başvuru bildirmiyor?
int a = 0;
const decltype((a)) x = 10; // Error
const int b = 0;
decltype ((b)) y = 42; // Correct
ben görebilirsiniz, ama yanlış kodu yanlış neden göremiyorum.
Test ettim ve biraz garip buldum.
const decltype((a)) x = 10;
Bu, const int&
ürününü tanımlamalıdır? Ama derleme değil! error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'
.
const decltype((a)) x = a;
olarak değiştirdim ve sonra derler.
Eh, x
bir const başvuru? Hayır, bu bir const-olmayan başvuru olduğunu buldum. a
'un değerini x
aracılığıyla değiştirebilirim.
const
değiştiricisi neden etkili değil? const
int&
olan tam tipine uygulanmış ve int&
için const
ilave int sabit başvuru olup bu int& const
yapar, çünkü
'const', başvurulan türden ziyade referansa (ve yok sayılır) uygulanır. –
, "decltype" ifadesini değiştiricilerle birleştirerek, "typedef" ed türüne değiştiricilerin uygulanması gibi çalışır. Metin ikamesi DEĞİLDİR. –
@ T.C. @ ben-voigt Oh, anladım. Yani 'const' int' 'int' 'const referansı, tüm' 'const int &', const int başvuru için değil, kombine için değil, tüm vücuda uygulanır ... Doğru? – CyberLuc