Ho visto del codice da qualche parte in cui qualcuno ha deciso di copiare un oggetto e successivamente spostarlo in un membro dati di una classe. Questo mi ha lasciato confuso in quanto pensavo che il punto centrale dello spostamento fosse evitare di copiare. Ecco l'esempio: struct S { S(std::string …
In C ++ 11 ci sono modelli variadici come questo: template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T>(new T(std::forward<Args>(args)...)); } Ci sono alcune curiosità su questo: L'espressione std::forward<Args>(args)...usa entrambi Argse argsma solo un ...token. Inoltre std::forwardè una funzione template non variadica che accetta solo …
class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Credo che il motivo sia che gli array possono essere inizializzati solo con la =sintassi, ovvero: int arr[3] = {1,3,4}; Domande Come posso fare quello che voglio …
Secondo le fonti che ho trovato, un'espressione lambda viene essenzialmente implementata dal compilatore creando una classe con operatore di chiamata di funzione sovraccarico e le variabili a cui si fa riferimento come membri. Ciò suggerisce che la dimensione delle espressioni lambda varia e, dato un numero sufficiente di variabili di …
(Nota: tuplee tiepuò essere preso da Boost o C ++ 11.) Quando si scrivono strutture piccole con solo due elementi, a volte tendo a scegliere a std::pair, poiché tutte le cose importanti sono già fatte per quel tipo di dati, come operator<per l'ordinamento rigoroso-debole . Gli svantaggi però sono i …
Ho un vettore di IInventory * e sto scorrendo l'elenco usando l'intervallo C ++ 11 per, per fare cose con ciascuno. Dopo aver eseguito alcune operazioni con uno, è possibile rimuoverlo dall'elenco ed eliminare l'oggetto. So di poter chiamare deleteil puntatore in qualsiasi momento per ripulirlo, ma qual è il …
Posso spostare elementi da un std::initializer_list<T>? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } Poiché std::intializer_list<T>richiede un'attenzione speciale da parte del compilatore e non ha una semantica dei valori come i normali contenitori …
In C ++ 11, come dovrei scrivere una funzione (o metodo) che accetta un array std :: di tipo noto ma dimensione sconosciuta? // made up example void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } } // lets imagine these being …
Qual'è la differenza tra std::system_clocke std::steady_clock? (Un caso esemplificativo che illustri risultati / comportamenti diversi sarebbe fantastico). Se il mio obiettivo è quello di misurare con precisione il tempo di esecuzione di funzioni (come un punto di riferimento), quale sarebbe la scelta migliore tra i std::system_clock, std::steady_clocke std::high_resolution_clock?
Voglio sapere quali sono le differenze semantiche tra la proposta di concetti completi in C ++ e i vincoli del modello (ad esempio, i vincoli come apparso in Dlang o la nuova proposta di concetti-lite per C ++ 1y ). Cosa sono in grado di fare i concetti a tutti …
C ++ 11 ha aggiunto alcune nuove funzioni di conversione delle stringhe: http://en.cppreference.com/w/cpp/string/basic_string/stoul Include stoi (string to int), stol (string to long), stoll (string to long long), stoul (string to unsigned long), stoull (string to unsigned long long). Notevole in sua assenza è una funzione stou (string to unsigned). C'è …
Ho iniziato a provare lo standard C ++ 11 e ho trovato questa domanda che descrive come chiamare il tuo ctor da un altro ctor nella stessa classe per evitare di avere un metodo init o simili. Ora sto provando la stessa cosa con un codice simile a questo: hpp: …
Come posso visualizzare il valore di un enum classin C ++ 11? In C ++ 03 è così: #include <iostream> using namespace std; enum A { a = 1, b = 69, c= 666 }; int main () { A a = A::c; cout << a << endl; } in …
Mi chiedevo come controllare correttamente se un std::functionè vuoto. Considera questo esempio: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Questo codice si compila bene in MSVC ma se chiamo doSomething()senza inizializzare eventFuncil codice ovviamente si …
Perché non è std::initializer_listintegrato un linguaggio di base? Mi sembra che sia una caratteristica abbastanza importante di C ++ 11 e tuttavia non ha una propria parola chiave riservata (o qualcosa di simile). Invece, initializer_listè solo una classe modello dalla libreria standard che ha una speciale mappatura implicita dalla nuova …
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.