Pytania otagowane jako c++11

Użyj tego znacznika do kodu, który musi zostać skompilowany jako C ++ 11 (nie używając żadnych funkcji wprowadzonych w C ++ 14 lub nowszej).

8
Kiedy naprawdę powinienem używać noexcept?
Słowo noexceptkluczowe można odpowiednio zastosować do wielu podpisów funkcji, ale nie jestem pewien, kiedy powinienem rozważyć jego użycie w praktyce. Na podstawie tego, co przeczytałem do tej pory, dodanie w ostatniej chwili noexceptwydaje się odnosić do niektórych ważnych problemów, które pojawiają się, gdy rzucają konstruktorzy ruchu. Nadal jednak nie jestem …

6
Jakie są główne cele używania std :: forward i jakie problemy rozwiązuje?
W doskonałym przekazywaniu std::forwardsłuży do konwersji nazwanych odwołań do wartości t1i t2do nienazwanych odwołań do wartości. Jaki jest tego cel? Jak wpłynęłoby to na wywoływaną funkcję inner, gdybyśmy opuścili wartości t1& t2jako wartości? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
Wartości C ++ 11 i zamieszanie semantyki ruchu (instrukcja return)
Próbuję zrozumieć odwołania do wartości i przenieść semantykę C ++ 11. Jaka jest różnica między tymi przykładami i który z nich nie wykona kopii wektorowej? Pierwszy przykład std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Drugi przykład std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp); …


6
Jak przekazać argument unikalny_ptr do konstruktora lub funkcji?
Jestem nowy, aby przenieść semantykę w C ++ 11 i nie wiem zbyt dobrze, jak obsługiwać unique_ptrparametry w konstruktorach lub funkcjach. Rozważ tę klasę, która sama się odwołuje: #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); } …


10
Ładne drukowane pojemniki C ++ STL
Zwróć uwagę na aktualizacje na końcu tego postu. Aktualizacja: Utworzyłem projekt publiczny na GitHub dla tej biblioteki! Chciałbym mieć jeden szablon, który raz na zawsze zajmuje się ładnym drukowaniem wszystkich pojemników STL operator<<. W pseudokodzie szukam czegoś takiego: template<container C, class T, String delim = ", ", String open = …

9
Co to jest std :: obietnica?
Jestem dość zaznajomieni z C ++ 11-tych std::thread, std::asynca std::futureskładniki (np zobaczyć tę odpowiedź ), które są prosto do przodu. Nie mogę jednak do końca zrozumieć, co to std::promisejest, co robi i w jakich sytuacjach najlepiej go wykorzystać. Sam standardowy dokument nie zawiera wielu informacji poza streszczeniem klas, podobnie jak …

1
Szablon C ++ typedef
mam klasę template<size_t N, size_t M> class Matrix { // .... }; Chcę utworzyć, typedefktóry tworzy Vector(wektor kolumny), który jest równoważny Matrixz rozmiarami N i 1. Coś w tym rodzaju: typedef Matrix<N,1> Vector<N>; Co powoduje błąd kompilacji. Poniższe tworzy coś podobnego, ale nie dokładnie tego, czego chcę: template <size_t N> …
368 c++  templates  c++11  typedef 

5
Zwracanie unikatowej wartości z funkcji
unique_ptr<T>nie zezwala na tworzenie kopii, zamiast tego obsługuje semantykę przenoszenia. Jednak mogę zwrócić a unique_ptr<T>z funkcji i przypisać zwróconą wartość do zmiennej. #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
Kompilowanie C ++ 11 za pomocą g ++
Próbuję zaktualizować mój kompilator C ++ do C ++ 11. Trochę przeszukałem i doszedłem do wniosku, że muszę użyć flagi -std=c++0xlub -std=gnu++0x, ale niewiele wiem o flagach. Czy ktoś może mi pomóc? (Używam Ubuntu 12.04.) Oto błąd, który otrzymuję z kompilatora, gdy próbuję użyć biblioteki zawartej w C ++ 11 …
367 c++  c++11  g++  flags 

14
Jak aktywować C ++ 11 w CMake?
Kiedy próbuję uruchomić plik makefile wygenerowany przez CMake w celu skompilowania mojego programu, pojawia się błąd zakres oparty na pętlach nie jest obsługiwany w trybie C ++ 98. Próbowałem dodać add_definitions(-std=c++0x)do mojego CMakeLists.txt, ale to nie pomogło. Próbowałem też: if(CMAKE_COMPILER_IS_GNUCXX) add_definitions(-std=gnu++0x) endif() Kiedy to robię g++ --version, otrzymuję: g ++ …
356 c++11  cmake 

6
std :: unique_lock <std :: mutex> czy std :: lock_guard <std :: mutex>?
На этот вопрос есть ответы на Stack Overflow на русском : Чем std :: unique_lock отличается от std :: lock_guard? Mam dwa przypadki użycia. A. Chcę zsynchronizować dostęp przez dwa wątki do kolejki. B. Chcę zsynchronizować dostęp do kolejki przez dwa wątki i użyć zmiennej warunkowej, ponieważ jeden z wątków …

14
Kiedy należy używać funkcji constexpr w C ++ 11?
Wydaje mi się, że posiadanie „funkcji, która zawsze zwraca 5”, łamie lub osłabia znaczenie „wywoływania funkcji”. Musi być jakiś powód lub potrzeba takiej możliwości, inaczej nie byłoby w C ++ 11. Dlaczego tam jest // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife = 42; // constexpr-function: constexpr int …
337 c++  c++11  constexpr 


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.