Derleyiciniz bunu yapıyorsa, bozuk.
[dcl.init.list]/p3 (bütün alıntılar N4140 vardır) aşağıdaki gibi bir nesne ya da tip T
referansının
listesi-başlatma tanımlanır:
T
bir toplam ise, toplu başlatma gerçekleştirilir (8.5.1).
- Aksi takdirde, başlatıcı öğesinin bir öğesi yoksa ve
T
varsayılan kurucuya sahip bir sınıf türüyse, nesne değeri başlangıç durumuna getirilir.
- [...]
[dcl.init]/p8: tip T
bir nesne değer başlatmak
için şu anlama gelir:
- ise
T
olduğu öntanımlı yapıcı (12.1) ya da kullanıcı tarafından sağlanan veya silinen varsayılan bir kurucu ile bir (muhtemelen cv-kalifiye) sınıf türü (Madde 9) nesne varsayılan başlatılır;
T
bir kullanıcı tarafından sağlanan veya silinmiş varsayılan kurucu olmayan bir (muhtemelen ev nitelikli) sınıf tipi ise, o zaman bir amacı, T bir sahipse sıfır başlatıldı ve varsayılan başlatma semantik kısıtları kontrol edilir ve bir önemsiz varsayılan yapıcı, nesne varsayılan başlatılır; T bir dizi tipi ise, her elemanın değeri başlatılmışsa
- ; Aksi takdirde, nesne sıfır başlatılmış olur.
Test_2
bir toplama değildir, bu nedenle t2
olmalıydı değer başlatıldı. Sırasıyla, Test_2
'un varsayılan yapıcısı kullanıcı tarafından sağlanmadığından, t2
ilk sıfır başlatılmış olması (t2.i
'un 0'a başlatılmasına neden olmaktır) ve sonra varsayılan kurucu çalıştırılır.
Hangi derleyici ve hangi sürüme sahipsiniz? "{}", toplayıcılar için değer sıfırlaması olmalı ve kullanıcı tarafından sağlanan kurucusu olmadığı için "t2.i" sıfır başlatılmış olmalıdır. –
Bu, [rextester] 'da (http://rextester.com/runcode) barındırılan MSVC'nin askıda kalmasına ve benzer bir çöp vermesine neden olur. Başka bir [MSVC çevrimiçi derleyici] ile aynı şey (http://webcompiler.cloudapp.net/). Bir böcek kokusu alıyorum. –