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

8
Gerçekten ne zaman istisnasız kullanmalıyım?
noexceptAnahtar kelime uygun birçok fonksiyon imzaları uygulanabilir, ama ben pratikte bunu kullanmayı düşünmelisiniz olarak emin değilim. Şimdiye kadar okuduğum şeye dayanarak, son dakika eklemesi, noexcepthamle yapıcıları fırlattığında ortaya çıkan bazı önemli sorunları ele alıyor gibi görünüyor. Ancak, noexceptilk etapta daha fazla bilgi edinmemi sağlayan bazı pratik sorulara hala tatmin edici …

6
Std :: forward kullanmanın temel amaçları nelerdir ve hangi sorunları çözer?
Mükemmel iletmede, std::forwardadlandırılmış değer referanslarını t1ve t2adlandırılmamış değer referanslarına dönüştürmek için kullanılır . Bunu yapmanın amacı nedir? Bu nasıl denir fonksiyonu etkileyecek innerGidersek t1& t2SolDeğerler olarak? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
C ++ 11 rvalues ​​ve move semantik karışıklığı (return ifadesi)
Rvalue referanslarını anlamaya ve C ++ 11 semantiği taşımak çalışıyorum. Bu örnekler arasındaki fark nedir ve hangileri vektör kopyası yapmayacaktır? İlk örnek std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); İkinci örnek std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector(); …


6
Unique_ptr bağımsız değişkenini bir yapıcıya veya işleve nasıl iletirim?
C ++ 11'de anlambilimi taşımak için yeniyim ve nasıl işleneceğini çok iyi bilmiyorum unique_ptr yapıcılarda veya işlevlerde parametrelerin . Bu sınıfın kendisine atıfta bulunmayı düşünün: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr …


10
Güzel baskı C ++ STL kapları
Lütfen bu yayının sonundaki güncellemeleri not edin. Güncelleme: Bu kütüphane için GitHub'da halka açık bir proje oluşturdum ! Bir kez ve herkes için tüm STL kaplarını güzel bir şekilde basmakla ilgilenen tek bir şablona sahip olmak istiyorum operator<<. Sahte kodda, ben böyle bir şey arıyorum: template<container C, class T, String …

9
Std :: promise nedir?
Ben C ++ 11 yılların ile oldukça tanıdık std::thread, std::asyncve std::futurebileşenler (örneğin bkz bu cevabı ) düz ileri. Ancak, ne std::promiseolduğunu, ne yaptığını ve hangi durumlarda en iyi şekilde kullanıldığını tam olarak anlayamıyorum. Standart belgenin kendisi, sınıf özetinin ötesinde bir sürü bilgi içermez ve ikisi de sadece :: thread içermez …

1
C ++ şablon typedef
benim bir sınıfım var template<size_t N, size_t M> class Matrix { // .... }; Ben bir boyut (N ve 1 ile eşdeğer typedefbir Vector(sütun vektör) oluşturur bir yapmak istiyorum. MatrixBöyle bir şey: typedef Matrix<N,1> Vector<N>; Hangi derleme hatası üretir. Aşağıdaki benzer bir şey oluşturur, ancak tam olarak istediğim şeyi değil: …
368 c++  templates  c++11  typedef 

5
Unique_ptr işlevlerinden döndürülüyor
unique_ptr<T>kopya oluşturmaya izin vermez, bunun yerine taşıma semantiğini destekler. Yine de, unique_ptr<T>bir işlevden bir geri dönebilir ve döndürülen değeri bir değişkene atayabilirim. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); // 2 } int main() …
367 c++  c++11  unique-ptr 

5
C ++ 11'i g ++ ile derleme
C ++ derleyicimi C ++ 11'e güncellemeye çalışıyorum. Biraz araştırdım ve bayrağı kullanmak zorunda olduğum -std=c++0xya da -std=gnu++0xbayraklar hakkında pek bir şey bilmediğim sonucuna vardım . Biri bana yardım edebilir mi? (Ubuntu 12.04 kullanıyorum.) İşte C ++ 11 (yani dizi) bulunan bir kütüphane kullanmaya çalıştığınızda derleyici gelen hata: #include <array> …
367 c++  c++11  g++  flags 

14
CMake'de C ++ 11'i nasıl etkinleştiririm?
Programımı derlemek için bir CMake oluşturulan makefile çalıştırmayı denediğimde, döngüler için aralık C ++ 98 modunda desteklenmez. Ben ekleyerek çalıştı add_definitions(-std=c++0x)kardeşime karşı CMakeLists.txt, ancak yardım etmedi. Ben de denedim: if(CMAKE_COMPILER_IS_GNUCXX) add_definitions(-std=gnu++0x) endif() Ben ne zaman g++ --versionben alıyorum: g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1 Ben de denedim SET(CMAKE_CXX_FLAGS "-std=c++0x"), …
357 c++11  cmake 

6
std :: unique_lock <std :: mutex> veya std :: lock_guard <std :: mutex>?
На этот вопрос есть ответы на yığın taşması на русском : Чем std :: unique_lock отличается от std :: lock_guard? İki kullanım durumum var. A. İki iş parçacığı tarafından bir kuyruğa erişimi eşitlemek istiyorum. B. İki kuyruğun erişimini bir kuyruğa eşitlemek ve bir koşul değişkeni kullanmak istiyorum, çünkü iş parçacıklarından …

14
C ++ 11'de constexpr özelliğini ne zaman kullanmalısınız?
Bana öyle geliyor ki, "her zaman 5 döndüren bir işleve" sahip olmak, "bir işlevi çağırmak" anlamını bozmaktadır. Bu yeteneğin bir nedeni veya ihtiyacı olmalı ya da C ++ 11'de olmayacaktır. Neden orada? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife = 42; // constexpr-function: constexpr int MeaningOfLife () …
337 c++  c++11  constexpr 


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.