Non capisco il motivo per cui un pacchetto di parametri deve essere alla fine dell’elenco dei parametri se quest’ultimo è associato a una class, mentre il vincolo è rilassato se l’elenco dei parametri è parte di una dichiarazione del metodo membro. In altri termini, questo compila: class C { template void fn() { } }; […]
C ++ 11 aggiunge la possibilità di dire al compilatore di creare un’implementazione predefinita di una qualsiasi delle funzioni membro speciali . Mentre riesco a vedere il valore dell’eliminazione di una funzione, dov’è il valore di default di una funzione? Basta lasciarlo in bianco e il compilatore lo farà comunque. L’unico punto che posso vedere […]
Ho bisogno di impostare un flag per un altro thread per uscire. Quell’altro thread controlla di volta in volta il flag di uscita. Devo usare atomico per la bandiera o solo un semplice bool è sufficiente e perché (con un esempio di cosa esattamente potrebbe andare storto se uso il bool semplice)? #include bool exit […]
Come spiegato in questa risposta , l’idioma copy-and-swap è implementato come segue: class MyClass { private: BigClass data; UnmovableClass *dataPtr; public: MyClass() : data(), dataPtr(new UnmovableClass) { } MyClass(const MyClass& other) : data(other.data), dataPtr(new UnmovableClass(*other.dataPtr)) { } MyClass(MyClass&& other) : data(std::move(other.data)), dataPtr(other.dataPtr) { other.dataPtr= nullptr; } ~MyClass() { delete dataPtr; } friend void swap(MyClass& first, […]
Ho visto online alcune volte che è stato detto che C ++ può essere sempre più veloce usando i template. Qualcuno potrebbe spiegare, anche a un livello basso perché questo è esattamente? Ho sempre pensato che una caratteristica così “carina” avrebbe avuto un sovraccarico come la maggior parte dei concetti utili. Sono davvero incuriosito da […]
Spesso mi trovo a voler scrivere un codice come questo: class MyClass { public: void addObject(std::unique_ptr&& newObject); void removeObject(const Object* target); private: std::set<std::unique_ptr> objects; }; Tuttavia, gran parte dell’interfaccia std :: set è praticamente inutile con std :: unique_ptrs poiché le funzioni di ricerca richiedono i parametri std :: unique_ptr (che ovviamente non ho perché […]
Leggendo varie domande qui su Stack Overflow su iteratori e prestazioni C ++ **, ho iniziato a chiedermi se for(auto& elem : container) viene “espanso” dal compilatore nella migliore versione ansible? (Un po ‘come l’ auto , che il compilatore inserisce subito nel giusto tipo e quindi non è mai più lento e talvolta più […]
Come faccio static_assert questo modo? Forse Boost lo supporta se non C ++ o nuove funzionalità in C ++ 11? template struct foo {}; template struct bar { static_assert(FooType is indeed foo for some T,”failure”); //how? };
Il seguente documento è la prima proposta che ho trovato per i pacchetti di parametri del modello. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1603.pdf A pagina 16, parla dell’introduzione di due nuovi operatori [] e per l’accesso agli elementi del pacchetto di parametri e ai tipi di pacchetti di parametri. The suggested syntax for such an operator involves two new operators: […]
Sto compilando il seguente semplice programma con g++-4.6.1 –std=c++0x : #include struct S { static constexpr int X = 10; }; int main() { return std::min(S::X, 0); }; Ottengo il seguente errore del linker: /tmp/ccBj7UBt.o: In function `main’: scratch.cpp:(.text+0x17): undefined reference to `S::X’ collect2: ld returned 1 exit status Mi rendo conto che i membri […]