Bu çok basit kod kod GCC 6.0 bir hata verir nedenleri sonra kod derler. Bu bir hata mı? Kod, clang'da iyi derler.statik veri üyesine başlatıcısı olarak geçici değerin başlangıç durumuna hata
cevap
T()
'un çalışmasının nedeni, derleyicinin bunu hiçbir argüman almayan bir işlev bildirimi olarak yorumlamasıdır. Derleme, sadece bir açık döküm ile yapılacaktır:
static const int b = (const int) T{};
Bu doğru değil. Bu sözdiziminin bir işlev bildirimi olarak yorumlanabilmesi mümkün değildir. 'T()', T {} 'ile etkili bir şekilde eşdeğerdir. Bir * nesne * yaratır, bir işlev değil. –
Bu yüzden, varsayımdan önce bunu görmek için daha fazlasını araştırın. –
Neyi varsayıyorum? –
- 1. Verilen statik başlatıcısı
- 2. üye başlatıcısı, statik olmayan bir veri üyesi veya
- 3. Yatay doldurma başlatıcısı ile başlangıç yastığı
- 4. DataGrid öğelerini sıfırla Yeniden başlangıç durumuna getiriliyor
- 5. Java'da son alanları başlangıç durumuna getirme
- 6. Bir QML StackView'ın başlangıç durumuna sıfırlanması
- 7. C++ Nesnelerin iki veri üyesine göre sıralanması
- 8. C, atlama başlangıç statik dizisi
- 9. şablonlu işlev geçici olarak
- 10. Statik bir yöntem içinde bir parametrenin özel üyesine erişim?
- 11. ColdFusion'dan bir Java sınıfının genel statik üyesine nasıl erişebilirim?
- 12. Linux'ta libgmp statik olarak bağlanırken hata oluştu
- 13. Statik değişkenin başlangıç değerinin doxygen değerini,
- 14. iOS 10 Başlangıç Ekranı Hata
- 15. Nesne Başlatıcısı ve Dinamik olarak özelliklerini belirleme
- 16. Açısal uygulama, Hata nedeniyle geçici olarak başarısız: [$ injector: modulerr]
- 17. VisualVM başlatıcısı hatası
- 18. Belirsiz referans üyesine 'Tableview'
- 19. Statik olmayan yöntem ..... statik olarak adlandırılmamalıdır
- 20. 'Nuget.Proxy Cache' tür başlatıcısı
- 21. Statik olmayan veri üyesi başlatıcılar neden tekdüzen başlatma sözdizimini bozuyor?
- 22. Listeyi geçici olarak listeden çıkartın
- 23. Array.prototype.sort Geçici Olarak İçeriği Çoğaltma?
- 24. MVC4 WebAPI süreci başlatıcısı
- 25. c'tor başlatıcı listesinde const const başvuruya geçici olarak bağlama
- 26. Bir SQL geçici tablosunun veri türlerini bulma
- 27. UITextView öğesinin başlatıcısı
- 28. Statik olarak bağlantılı ikili dosyada eksiklik hata ayıklama sembolleri
- 29. statik kodu aşağıdaki hata tespit etmek için,
- 30. WPF Dondurulabilir hata için geçici çözüm?
Bir cevabım yok, sadece olası bir sebep önerebilirim. T {}, T'nin temel bir tür olmadığı anlamına gelir, bu nedenle int'ye dönüşüm yoktur. Fakat T() kullandığınızda, T int veya neyse olabilir. –
@SergiiKhaperskov 'T {}' ortak olarak "uniform-initialization" (standart terimi kullanmıyor olsa da) olarak adlandırılır. Yerleşik olsun veya olmasın herhangi bir veri türü bir çift kaşlı ayraç kullanılarak başlatılabilir. Bu, çoğunlukla [Most Vexing Parse] (http://en.wikipedia.org/wiki/Most_vexing_parse) sorununu aşmak için C++ 11'e eklenmiştir. –
Anladım. Temel türlerin {} ile başlatılabileceğini bilmiyordum. Sadece nesneler, diziler ve kaplar için olduğunu sanıyordum. Zaman ayırdığınız için üzgünüm :) –