cevap
C++ 11 sınıf içi üye başlatıcılarına sahip olduğunda, yapı/sınıf bir toplam — yapmaz, bu durum C++ 14'te değiştirilmiştir. Bu ilk karşılaştığımda şaşırtıcı bulduğum bir şey, bu kısıtlamanın mantığı, sınıftaki başlatıcıların, kullanıcı tanımlı bir kurucuya oldukça benzemesidir, ancak karşı argüman, hiç kimse gerçekten sınıf içi başlatıcıların eklenmesini beklememesi gerektiğidir. sınıfları/yapıları toplu değil, emin olmadı. C++14 aynı paragraf okur
An aggregate is an array or a class (Clause 9) with no user-provided constructors (12.1), no brace-or-equal initializers for non-static data members (9.2), no private or protected non-static data members (Clause 11), no base classes (Clause 10), and no virtual functions (10.3).
ve: (ileri gidiş vurgu benim) draft C++11 standard bölüm 8.5.1
Agregalar itibaren
Bu değişiklik N3605: Member initializers and aggregates kaplıdır
An aggregate is an array or a class (Clause 9) with no user-provided constructors (12.1), no private or protected non-static data members (Clause 11), no base classes (Clause 10), and no virtual functions (10.3).
hangi aşağıdaki özet bulunmaktadır:
Bjarne Stroustrup and Richard Smith raised an issue about aggregate initialization and member-initializers not working together. This paper proposes to fix the issue by adopting Smith's proposed wording that removes a restriction that aggregates can't have member-initializers.
Bu yorum, temelde onları agrega olmak için izin konusunda isteksizlik özetliyor:
Aggregates cannot have user-defined constructors and member-initializers are essentially some kind of user-defined constructor (element) (see also Core Defect 886). I'm not against this extension, but it also has implications on what our model of aggregates actually is. After acceptance of this extension I would like to know how to teach what an aggregate is.
revize edilmiş versiyonu N3653May 2013 kabul edilmiştir.
G++ 5.0 now supports C++14 aggregates with non-static data member initializers ya std=c++1y
veya -std=c++14
kullanarak işaret EMSR Güncelleme
:
struct A { int i, j = i; };
A a = { 42 }; // a.j is also 42
o live çalışma Bkz.
- 1. Bu haskell sözdizimi nedir?</p> <pre><code>data A = A Int Int | B m :: A -> Int m a = case a of A{} -> 1 _ -> 2 </code></pre> <p>burada ne <code>A{}</code> nedir -
- 2. Python nasıl</p> <pre><code>['a 1 a', 'a 2 a', 'a 3 a', 'a 4 a'] </code></pre> <p>teşekkür ederiz yazdırmak için ben alırım bütün desenleri
- 3. Bu garip koşullu operatör sözdizimi nedir?</p> <pre><code>bool bRes = (a < b) ? a=b, true : false; </code></pre> <p><code>a < b</code>, o zaman <code>a=b</code> infaz ve <code>bRes</code> doğrudur edilir:
- 4. <a> etiketi
- 5. Akış çıkışında <yerine <neden hala <çoğum?
- 6. XPath - tüm elemanlar alt elemanlara belge</p> <pre><code><a> <b> <c/> <d/> </b> <b> <c/> <d/> </b> </a> </code></pre> <p>Verilen
- 7. Referans 'bu' bir <a> etiketi
- 8. convert IQueryable <int> to <int>
- 9. Neden powershell() bazen çalıştırdığım kodu yazdırıyor?</p> <pre><code>function f { $a=2 } $a </code></pre> <p>O yazdırır:</p> <pre><code>C:\Users\vics> function f { $a=2 } $a </code></pre> <p>Neden bu kadar weired ben varsa
- 10. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 11. Git, <<<<<<< HEAD dosyasına
- 12. IEnumerable <int>
- 13. Android: Ben</p> <pre><code>int a=(-2)%6 </code></pre> <p>çalışırsanız
- 14. İşte</p> <pre><code>[[a,3],[b,3]] </code></pre> <p>olduğunu</p> <p>sonucu olmalıdır
- 15. İkili Karşılaştır <int>
- 16. C# <<int> T, ICollection>
- 17. Sözlüklüğe ekle <int, List <int>>
- 18. - değil <a href>
- 19. <a href.. in PHP
- 20. `void f (A <I>, tuple <T *...>)` dan daha özel değil (A <0>, tuple <T *...>) `` dır?
- 21. Java i 2 farklı sınıflar</p> <pre><code>public class A { String name; int A1; int A2; } </code></pre> <p>ve diğer sınıf
- 22. SEO: <button> vs <a> HTML etiketleri
- 23. T (x) bir döküm olarak kabul edilir mi? Ancak</p> <pre><code>int foo = (int) somefloat; </code></pre> <p>bu bir döküm kabul edilir: Aşağıdaki
- 24. Ben <strong>OSB Eclipse</strong> 2 projeleri <strong>A</strong> ve <strong>B</strong> sahip tutulma
- 25. DVWA Ben <a href="http://www.dvwa.co.uk/" rel="nofollow noreferrer">DVWA</a> yapılandırmış
- 26. 'Async <string []>' türü 'seq <'a>'
- 27. Değeri değiştir Bu sınıf örneğinde Sonra</p> <pre><code>class A { String a; } </code></pre> <p>enjekte etmek google Guice kullanarak
- 28. Kanal seç <- <- Kanal
- 29. SQL, ben aynı veri herhangi bir sütun</p> <pre><code>Source data table: P1 P2 P3 ----------- a b a a a b c a b b b a </code></pre> <p>Ben böyle bir şey göstermek istiyorum görünen bir toplamı için tarafından daha sonra birden sütunlarda grubu saymaya çalışıyorum
- 30. Bu smiley-with-beard ifadesi nedir: "<:]{%>"? <pre><code>int main(){ <:]{%>; // smile! } </code></pre> <p><a href="http://ideone.com/inXuVc">Live example.</a></p> <p>programı ne yapar</p> ve gülen ifadesi o neyin
Yani tam bir sorun değil gibi görünüyor gcc – Bikineev
@Bikineev hmmm, hangi gcc' sürümünü kullanıyorsunuz? '-std = C++ 11' kullanarak' gcc' '4.7' -' 4.9' arasında yeniden üretemiyorum. Sorunuzu açıklayabilir misiniz, "clang" ın kabul ettiğini söylediniz, sanırım "gcc" mi demek istediniz? –
Gcc 4.9.1 kullanıyorum. Ben gcc'in bu değişikliği teklifinden desteklemediğini kastettim. Ben: "hata: 'A :: A ()'" –
Bikineev