Bu kod:Neden bir uçucudan varsayılan bir kopya kurucu ile sağlanmıyor?
class X {
int member;
};
volatile X a;
X b = a;
hata ile başarısız:
prog.cpp:6:7: error: no matching function for call to ‘X::X(volatile X&)’
prog.cpp:6:7: note: candidates are:
prog.cpp:1:7: note: X::X()
prog.cpp:1:7: note: candidate expects 0 arguments, 1 provided
prog.cpp:1:7: note: X::X(const X&)
prog.cpp:1:7: note: no known conversion for argument 1 from ‘volatile X’ to ‘const X&’
Benim için bir uçucu kopya kurucu oluşturmak için derleyici alabilirsiniz bir yolu var mı?
İhtiyacınız “volatile” ı ilan etmek. – 0x499602D2
Ama uçucu olmayan bir kopya istiyorum! – Eric
'volatile X &' const X 'ye dönüştürülemez çünkü iki niteleyici birbiriyle çelişir: 'const'' bir kez okur, değişmeyecektir ',' volatile' diyor ki 'her seferinde okuyor, çünkü değişebilir". C++ standardında bu dönüşümü dolaylı olarak yasaklayan bazı akıllı kurallar olmalıdır. – dasblinkenlight