Quando implemento una funzione di callback in C ++, dovrei ancora usare il puntatore alla funzione in stile C: void (*callbackFunc)(int); O dovrei usare std :: function: std::function< void(int) > callbackFunc;
Tradizionalmente, il modo standard e portatile per evitare inclusioni multiple di intestazione in C ++ era / è quello di utilizzare lo #ifndef - #define - #endifschema di direttive pre-compilatore chiamato anche schema di macro-guardia (vedi frammento di codice sotto). #ifndef MY_HEADER_HPP #define MY_HEADER_HPP ... #endif Nella maggior parte delle …
A volte devo usare std::threadper velocizzare la mia applicazione. So anche che join()aspetta che un thread sia completato. È facile da capire, ma qual è la differenza tra chiamare detach()e non chiamarlo? Ho pensato che senza detach(), il metodo del thread funzionerà usando un thread in modo indipendente. Non staccare: …
C ++ 11 introduce letterali definiti dall'utente che permetteranno l'introduzione di nuova sintassi letterale basato su letterali esistenti ( int, hex, string, float) in modo che qualsiasi tipo saranno in grado di avere una presentazione letterale. Esempi: // imaginary numbers std::complex<long double> operator "" _i(long double d) // cooked form …
Sono stato in qualche modo sorpreso che il seguente codice venga compilato ed eseguito (vc2012 & gcc4.7.2) class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; // Foo::Bar b = f.Baz(); // error auto b = f.Baz(); …
Da quello che ho visto in questo post ho deciso di iniziare a leggere il libro Effective C ++ . Ma ora che ci sono molte nuove funzionalità a causa di C ++ 11 e che alcune delle buone pratiche sono cambiate, non sono sicuro che sia effettivamente una buona …
Lo standard definisce esattamente cosa posso fare con un oggetto dopo che è stato spostato? Pensavo che tutto ciò che puoi fare con un oggetto spostato è distruggerlo, ma ciò non sarebbe sufficiente. Ad esempio, prendi il modello di funzione swapcome definito nella libreria standard: template <typename T> void swap(T& …
Il comportamento in corto circuito degli operatori &&ed ||è uno strumento straordinario per i programmatori. Ma perché perdono questo comportamento quando sono sovraccarichi? Capisco che gli operatori sono semplicemente zucchero sintattico per le funzioni, ma gli operatori per boolquesto comportamento, perché dovrebbe essere limitato a questo singolo tipo? C'è qualche …
(Nota: questa domanda riguarda il non dover specificare il numero di elementi e consentire comunque l'inizializzazione diretta dei tipi nidificati.) Questa domanda discute gli usi rimasti per un array C come int arr[20];. Sulla sua risposta , @James Kanze mostra una delle ultime roccaforti degli array C, le sue caratteristiche …
Essere in grado di creare e manipolare stringhe durante la compilazione in C ++ ha diverse utili applicazioni. Sebbene sia possibile creare stringhe in fase di compilazione in C ++, il processo è molto complicato, poiché la stringa deve essere dichiarata come una sequenza variadica di caratteri, ad es. using …
Non ho bisogno di terminare correttamente il thread o farlo rispondere a un comando "termina". Sono interessato a terminare forzatamente il thread utilizzando C ++ 11 puro.
Considera il caso di una funzione basata su modelli con argomenti modello variadici: template<typename Tret, typename... T> Tret func(const T&... t); Ora ho una tupla tdi valori. Come posso chiamare func()usando i valori di tupla come argomenti? Ho letto bind()sull'oggetto funzione, con call()funzione, e anche la apply()funzione in diversi documenti …
Non capisco perché mai dovrei farlo: struct S { int a; S(int aa) : a(aa) {} S() = default; }; Perché non dire semplicemente: S() {} // instead of S() = default; perché introdurre una nuova sintassi per questo?
Come suggerisce il titolo, sto cercando di capire un modo per generare numeri casuali usando la nuova libreria C ++ 11 <random>. L'ho provato con questo codice: std::default_random_engine generator; std::uniform_real_distribution<double> uniform_distance(1, 10.001); Il problema con il codice che ho è che ogni volta che lo compilo ed eseguo, genera sempre …
Dato un lambda, è possibile capire il tipo di parametro e il tipo restituito? Se si, come? Fondamentalmente, voglio lambda_traitsche può essere utilizzato nei seguenti modi: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long La motivazione dietro …
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.