«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).

4
C ++ 11'de bir yazı ne zaman taşınabilir hale getirilir?
Bunun arama sonuçlarımda görünmemesine şaşırdım, C ++ 11'deki hareket anlambiliminin kullanışlılığı göz önüne alındığında, birisinin bunu daha önce soracağını düşündüm: C ++ 11'de bir sınıfı ne zaman hareketsiz hale getirmeliyim (ya da bu benim için iyi bir fikir mi)? (Nedenleri diğer ise mevcut kodu ile uyumluluk sorunları daha.)

6
Atama operatörünü ve "if (this! = & Rhs)" öğesini taşıyın
Bir sınıfın atama operatöründe, genellikle atanan nesnenin çağıran nesne olup olmadığını kontrol etmeniz gerekir, böylece işleri batırmazsınız: Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment } return *this; } Taşıma atama operatörü için aynı şeye ihtiyacınız var mı? Hiç this == &rhsdoğru olabilecek bir …

2
Lambda yakalama ve aynı isimli parametre - diğerini kim gölgeliyor? (clang vs gcc)
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 ve daha yeni çıktı "Clang ++ kullanıyorsunuz!" ve kullanılmayan yakalama konusunda uyarın foo. g ++ 4.9.0 ve daha yenisi "g ++ kullanıyorsunuz!" ve kullanılmayan parametre konusunda uyarın foo. Burada C …

3
1.0, std :: generate_canonical'dan geçerli bir çıktı mı?
Hep rastgele sayılar, sıfır ile bir arasında yalan düşündüm olmadan1 , onlar yarı açık aralık [0,1) dan sayılardır yani. Cppreference.com üzerinde Documention ait std::generate_canonicaldoğruluyor bu. Ancak aşağıdaki programı çalıştırdığımda: #include <iostream> #include <limits> #include <random> int main() { std::mt19937 rng; std::seed_seq sequence{0, 1, 2, 3, 4, 5, 6, 7, 8, …
124 c++  c++11  random 

2
C ++ 11 lambdalar kullanmadıkları değişkenleri yakalar mı?
[=]Tüm yerel değişkenlerin bir lambda'daki değer tarafından yakalanmasını istediğimi belirtmek için kullandığımda , bu işlevdeki tüm yerel değişkenlerin kopyalanmasıyla mı yoksa sadece lambda tarafından kullanılan tüm yerel değişkenlerle mi sonuçlanır ? Yani, örneğin, eğer sahipsem: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return my_measly_int + i; }); My_huge_vector, onu lambda'da kullanmasam …
124 c++  lambda  c++11 

3
Bu işaretçiyi kullanmak, sıcak döngüde tuhaf deoptimizasyona neden olur
Son zamanlarda garip bir deoptimizasyonla (veya daha doğrusu kaçırılmış optimizasyon fırsatıyla) karşılaştım. 3 bitlik tamsayılardan 8 bitlik tam sayılara kadar dizilerin verimli bir şekilde açılması için bu işlevi göz önünde bulundurun. Her döngü yinelemesinde 16 girişi paketler: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t …

6
hata: silinen işlevin kullanılması
Bir arkadaşımın yazdığı bir C ++ kodu üzerinde çalışıyorum ve gcc4.6 ile derlerken daha önce hiç görmediğim şu hatayı alıyorum: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’ Düzenleme: Bu, yükseltme …


2
Std :: tie nasıl çalışır?
std::tieÇok düşünmeden kullandım . İşe yarıyor, bu yüzden şunu kabul ettim: auto test() { int a, b; std::tie(a, b) = std::make_tuple(2, 3); // a is now 2, b is now 3 return a + b; // 5 } Ama bu kara büyü nasıl çalışıyor? Geçici bir std::tiedeğişim tarafından nasıl yaratılır …
120 c++  c++11  tuples 

4
Gcc'de C ++ 11'i nasıl etkinleştiririm?
Mac OSX Mountain Lion'da http://hpc.sourceforge.net adresinden gcc 4.8.1 kullanıyorum . İçinde to_stringişlevini kullanan bir C ++ programı derlemeye çalışıyorum <string>. Bayrağı -std=c++11her seferinde kullanmam gerekiyor : g++ -std=c++11 -o testcode1 code1.cpp Bu bayrağı varsayılan olarak eklemenin bir yolu var mı?
119 c++11  g++ 

2
bir vektörü sıfır olarak başlat C ++ / C ++ 11
C ++ 11'de bir değişkeni sıfıra başlatma özelliğini eklediklerini biliyorum. double number = {}; // number = 0 int data{}; // data = 0 std::vectorSabit uzunluktaki a'yı tüm sıfırlara eşitlemenin benzer bir yolu var mı?
118 c++  c++11 

7
C ++ 11'de COW std :: string uygulamasının yasallığı
Anladığım kadarıyla, yazma üzerine kopyalamanın std::stringC ++ 11'de bir uyumu uygulamak için uygun bir yol olmadığını anladım, ancak son zamanlarda tartışmada ortaya çıktığında kendimi bu ifadeyi doğrudan destekleyemiyor buldum. C ++ 11'in COW tabanlı uygulamalarını kabul etmediğini doğru muyum std::string? Eğer öyleyse, bu kısıtlama yeni standartta (nerede) açıkça belirtilmiş mi? …

1
C ++ 11'deki zaman uyumsuz (launch :: async), pahalı iş parçacığı oluşturmadan kaçınmak için iş parçacığı havuzlarını eski yapar mı?
Bu soru gevşek bir şekilde ilişkilidir: std :: thread C ++ 11'de havuzlanır mı? . Soru farklı olsa da niyet aynıdır: Soru 1: Pahalı iş parçacığı oluşturmayı önlemek için kendi iş parçacığı havuzlarınızı (veya üçüncü taraf kitaplığı) kullanmak hala mantıklı mı? Diğer sorudaki sonuç, std::threadhavuzda toplanmaya güvenemeyeceğinizdir (olabilir ya da …


8
C ++ 03 ve C ++ 11 arasında, varsa, çalışma zamanında ne gibi farklılıklar tespit edilebilir?
Bir C derleyicisi ile derlendiğinde 0 döndüren ve bir C ++ derleyicisi ile derlendiğinde 1 döndüren bir işlev yazmak mümkündür (önemsiz sulüsyon ile #ifdef __cplusplus ilginç değildir). Örneğin: int isCPP() { return sizeof(char) == sizeof 'c'; } Tabii ki, yukarıdakiler yalnızca sizeof (char) aynısizeof (int) Başka, daha taşınabilir bir çözüm …

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.