La noexceptparola chiave può essere applicata in modo appropriato a molte firme di funzioni, ma non sono sicuro di quando dovrei considerare di usarlo nella pratica. Sulla base di ciò che ho letto finora, l'aggiunta dell'ultimo minuto noexceptsembra affrontare alcuni problemi importanti che sorgono quando si lanciano costruttori di mosse. …
In perfetto inoltro, std::forwardviene utilizzato per convertire i riferimenti rvalue nominati t1e t2in riferimenti rvalue senza nome. Qual è lo scopo di farlo? In che modo ciò influirebbe sulla funzione chiamata innerse lasciamo t1e t2come valori? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }
Sto cercando di capire i riferimenti ai valori e spostare la semantica di C ++ 11. Qual è la differenza tra questi esempi e quale di essi non eseguirà alcuna copia vettoriale? Primo esempio std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Secondo esempio std::vector<int>&& …
MyClass a1 {a}; // clearer and less error-prone than the other three MyClass a2 = {a}; MyClass a3 = a; MyClass a4(a); Perché? Non sono riuscito a trovare una risposta su SO, quindi lasciami rispondere alla mia domanda.
Sono nuovo di spostare la semantica in C ++ 11 e non so molto bene come gestire i unique_ptrparametri nei costruttori o nelle funzioni. Considera questa classe che fa riferimento a se stessa: #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) …
Si prega di prendere nota degli aggiornamenti alla fine di questo post. Aggiornamento: ho creato un progetto pubblico su GitHub per questa libreria! Vorrei avere un unico modello che si occupasse una volta per tutte di stampare graziosamente tutti i contenitori STL tramite operator<<. In pseudo codice, sto cercando qualcosa …
Sono abbastanza familiarità con C ++ 11 di std::thread, std::asynce std::futurecomponenti (ad esempio, vedere questa risposta ), che sono straight-forward. Tuttavia, non riesco a capire cosa std::promisesia, cosa faccia e in quali situazioni sia meglio utilizzato. Lo stesso documento standard non contiene molte informazioni oltre alla sua sinossi di classe, …
Ho una lezione template<size_t N, size_t M> class Matrix { // .... }; Voglio fare un typedefche crea un Vector(vettore di colonna) che è equivalente a a Matrixcon dimensioni N e 1. Qualcosa del genere: typedef Matrix<N,1> Vector<N>; Che produce errori di compilazione. Quanto segue crea qualcosa di simile, ma …
unique_ptr<T>non consente la costruzione di copie, ma supporta la semantica di spostamento. Tuttavia, posso restituire a unique_ptr<T>da una funzione e assegnare il valore restituito a una variabile. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); …
Sto cercando di aggiornare il mio compilatore C ++ a C ++ 11. Ho cercato un po 'e sono giunto alla conclusione che devo usare la bandiera -std=c++0xo -std=gnu++0x, ma non conosco molte cose sulle bandiere. Qualcuno può aiutarmi? (Sto usando Ubuntu 12.04.) Ecco l'errore che ottengo dal compilatore quando …
Quando provo ad eseguire un makefile generato da CMake per compilare il mio programma, ottengo l'errore l'intervallo basato su loop non è supportato in modalità C ++ 98. Ho provato ad aggiungere add_definitions(-std=c++0x)al mio CMakeLists.txt, ma non ha aiutato. Ho provato anche questo: if(CMAKE_COMPILER_IS_GNUCXX) add_definitions(-std=gnu++0x) endif() Quando lo faccio g++ …
Altre informazioni su Stack Overflow in Stack Overflow : Versione standard :: unique_lock Versione successiva :: lock_guard? Ho due casi d'uso. R. Voglio sincronizzare l'accesso di due thread in una coda. B. Voglio sincronizzare l'accesso di due thread a una coda e utilizzare una variabile di condizione perché uno dei …
Mi sembra che avere una "funzione che restituisce sempre 5" stia rompendo o diluendo il significato di "chiamare una funzione". Ci deve essere un motivo o una necessità per questa funzionalità o non sarebbe in C ++ 11. Perché è lì? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int …
L'esempio comune per i loop () basati su intervallo C ++ 11 è sempre qualcosa di semplice come questo: std::vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7 }; for ( auto xyz : numbers ) { std::cout << xyz << std::endl; } Nel qual caso xyzè un …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.