string foo() { return "hello"; }
int main()
{
//below should be illegal for binding a non-const (lvalue) reference to a rvalue
string& tem = foo();
//below should be the correct one as only const reference can be bind to rvalue(most important const)
const string& constTem = foo();
}
- bir derleme hatası vermek için iyi bir:
std::string&
tipistd::string
- türünde bir
std::string&
türünün const olmayan referansının geçersiz başlatılması VS2008 en az verirken çok kötü değil derleme uyarısı: uyarı C4239: standart olmayan uzantı kullanılıyor: 'initializing':std::string
'denstd::string &
'a dönüştürme const olmayan bir başvurusu yalnızca bir xvalx39 - değerine bağlı olabilir. Sorunlu olanı geliyor - VS2010 (SP1) Herhangi bir hatası veya uyarı OLMADAN, NEDEN ?? !! VS2010'daki rvalue referans rzue ile bağlamak için kullanılabilir ama ben
&&
kullanmıyorum, yerine demo kodu, ben sadece const olmayan lvalue referansı kullanıyordum!
Birisi burada VS2010'un davranışını açıklamama yardım edebilir mi? Bu bir böcek mi? TeşekkürlerBir VS2010 hatası? Bir const OLMADAN, bir const olmayan referansı bağlamak için bir uyarı mı?
Uyarı ayarlarınız nedir? Belki de değişimleri olan ve uygulamalarını değiştirmeyen konfigürasyonunuz mu? –
VS2008'i bir süredir kullanıyorum ama VS2010'u bu yüzden VS10'a yüklüyorum, bu yüzden varsayılan ayarını kullanmalıyım ... – Gob00st
o zaman uyarı eşiğinin sadece yeterince yüksek olmadığını düşünüyorum. '4xxx' aralığında uyarıları etkinleştirmek için '\ W4' kullanın. –