«c++11» etiketlenmiş sorular

C ++ 11 olarak derlenmesi gereken kod için bu etiketi kullanın (C ++ 14 veya sonraki sürümlerde sunulan hiçbir özelliği kullanmayın).


5
Std :: shared_ptr'nin atomik olmayan bir eşdeğeri var mı? Ve neden <memory> 'de bir tane yok?
Bu biraz iki bölümden oluşan bir sorudur, tümü aşağıdakilerin atomikliği ile ilgilidir std::shared_ptr: 1. Söyleyebileceğim kadarıyla atomik std::shared_ptrolan tek akıllı işaretçi &lt;memory&gt;. std::shared_ptrKullanılabilirin atomik olmayan bir sürümü olup olmadığını merak ediyorum (içinde hiçbir şey göremiyorum &lt;memory&gt;, bu yüzden Boost'takiler gibi standart dışındaki önerilere de açığım). boost::shared_ptrAtomik olduğunu da biliyorum ( …


5
Bir lambda neden 1 bayt boyutuna sahiptir?
C ++ 'da bazı lambdaların hafızası üzerinde çalışıyorum, ancak boyutları beni biraz şaşırttı. İşte test kodum: #include &lt;iostream&gt; #include &lt;string&gt; int main() { auto f = [](){ return 17; }; std::cout &lt;&lt; f() &lt;&lt; std::endl; std::cout &lt;&lt; &amp;f &lt;&lt; std::endl; std::cout &lt;&lt; sizeof(f) &lt;&lt; std::endl; } Buradan çalıştırabilirsiniz: http://fiddle.jyt.io/github/b13f682d1237eb69ebdc60728bb52598 Çıktı: …
90 c++  c++11  lambda  c++14  sizeof 

3
Const void nedir?
Açıklama std::is_voidşunları belirtir: T tipi void, const void, volatile void veya const volatile void ise, true değerine eşit üye sabit değerini sağlar . O zaman ne olabilir const voidveya a volatile void? Bu cevap , const voiddönüş türünün geçersiz olacağını belirtir (ancak VC ++ 2015'te derlenir) const void foo() { …
90 c++  c++11  c++14 

3
Varsayılan, değer ve sıfır başlatma karmaşası
Değer &amp; varsayılan &amp; sıfır başlatma konusunda kafam çok karışık. ve özellikle farklı standartlar C ++ 03 ve C ++ 11 (ve C ++ 14 ) için devreye girdiklerinde . Burada gerçekten iyi bir cevabı alıntılamakta ve genişletmeye çalışıyorum Value- / Default- / Zero- Init C ++ 98 ve C …
89 c++  c++11  c++14  c++03  c++98 

5
Paylaşılan işaretçileri bağımsız değişken olarak aktarma
Paylaşılan bir işaretçiye sarılmış bir nesne bildirirsem: std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); sonra bunu bir yönteme argüman olarak aktarmak istedim: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } Yukarıdakiler, paylaşılan_pt'nin referans sayısını artırıyor ve her şey yolunda mı? Yoksa sallanan bir işaretçi mi bırakıyor? Hala bunu yapmanız gerekiyor …



4
Neden varsayılan taşıma ataması / taşıma yapıcısı yok?
Ben basit bir programcıyım. Sınıf üyelerim değişkenleri çoğunlukla POD türleri ve STL kapsayıcılarından oluşur. Bu nedenle, bunlar varsayılan olarak uygulandığı için nadiren atama işleçleri yazmak veya oluşturucuları kopyalamak zorunda kalıyorum. Buna ek olarak, std::movehareket ettirilemeyen nesnelerde kullanırsam, atama operatörünü kullanır, yani std::movetamamen güvenlidir. Basit bir programcı olduğum için, yazdığım her …


3
Statik anahtar kelimenin kullanımdan kaldırılması… artık yok mu?
C ++ 'da, staticbir sembolün görünürlüğünü (değişken veya işlev bildirimi) etkilemek için bir çeviri birimi içinde anahtar kelimeyi kullanmak mümkündür . N3092'de bu kullanımdan kaldırıldı: Ek D.2 [depr.static] Statik anahtar sözcüğün kullanımı, ad alanı kapsamındaki nesneler bildirilirken kullanımdan kaldırılmıştır (bkz. 3.3.6). N3225'te bu kaldırılmıştır. Bulabildiğim tek makale biraz gayri resmi. …
89 c++  static  c++11  standards 

4
Değişken şablon argümanları nasıl saklanır?
Bir parametre paketini daha sonra kullanmak için bir şekilde saklamak mümkün müdür? template &lt;typename... T&gt; class Action { private: std::function&lt;void(T...)&gt; f; T... args; // &lt;--- something like this public: Action(std::function&lt;void(T...)&gt; f, T... args) : f(f), args(args) {} void act(){ f(args); // &lt;--- such that this will be possible } } …

3
C ++ 11, statik olmayan ve const olmayan üyelerin sınıf içi başlatılmasına izin verir. Ne değişti?
C ++ 11'den önce, sınıf içi başlatma işlemini yalnızca integral veya numaralandırma türünün statik const üyelerinde gerçekleştirebiliyorduk. Stroustrup bunu C ++ SSS bölümünde tartışır ve aşağıdaki örneği verir: class Y { const int c3 = 7; // error: not static static int c4 = 7; // error: not const static …

8
C ++ 11 emplace_back vektörü <yapı>?
Aşağıdaki programı düşünün: #include &lt;string&gt; #include &lt;vector&gt; using namespace std; struct T { int a; double b; string c; }; vector&lt;T&gt; V; int main() { V.emplace_back(42, 3.14, "foo"); } Çalışmıyor: $ g++ -std=gnu++11 ./test.cpp In file included from /usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h:34:0, from /usr/include/c++/4.7/bits/allocator.h:48, from /usr/include/c++/4.7/string:43, from ./test.cpp:1: /usr/include/c++/4.7/ext/new_allocator.h: In instantiation of ‘void …
89 c++  c++11 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.