C ++ 11 consente a inline namespaces, tutti i membri dei quali sono automaticamente inclusi nell'allegato namespace. Non riesco a pensare a nessuna utile applicazione di questo - qualcuno può per favore dare un breve, breve esempio di una situazione in cui inline namespaceè necessario e dove è la soluzione …
Esiste un adattatore contenitore che potrebbe invertire la direzione degli iteratori in modo che io possa scorrere su un contenitore al contrario con for-loop basato su intervallo? Con gli iteratori espliciti convertirei questo: for (auto i = c.begin(); i != c.end(); ++i) { ... in questo: for (auto i = …
C'è una differenza tra le seguenti definizioni? const double PI = 3.141592653589793; constexpr double PI = 3.141592653589793; In caso contrario, quale stile è preferito in C ++ 11?
È possibile che il codice C ++ sia conforme allo standard C ++ 03 e allo standard C ++ 11 , ma che facciano cose diverse a seconda di quale standard viene compilato?
Sto cercando di costruire un std::threadcon una funzione membro che non accetta argomenti e restituisce void. Non riesco a capire alcuna sintassi che funzioni: il compilatore si lamenta in ogni caso. Qual è il modo corretto di implementare in spawn()modo che restituisca un std::threadche esegue test()? #include <thread> class blub …
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Ci sono molti post su Google e StackOverflow, ma non riesco a capire perché make_sharedsia più efficiente dell'utilizzo diretto shared_ptr. Qualcuno può spiegarmi passo dopo passo la sequenza di oggetti creati e le operazioni eseguite da entrambi in modo che io possa capire …
Di recente mi sono imbattuto nel seguente pezzo di codice esoterico. int main(){(([](){})());} Riformattalo come segue per renderlo più leggibile: int main(){ (([](){})()); // Um... what?!?! } Ma non riesco a capire come (([](){})())sia valido il codice. Non sembra la sintassi del puntatore a funzione. Non può essere un trucco …
Quando una funzione prende un shared_ptr(da boost o C ++ 11 STL), la stai passando: per riferimento const: void foo(const shared_ptr<T>& p) o per valore void foo(shared_ptr<T> p):? Preferirei il primo metodo perché sospetto che sarebbe più veloce. Ma ne vale davvero la pena o ci sono altri problemi? Potresti …
Non sto facendo questa domanda a causa dei meriti della raccolta dei rifiuti prima di tutto. La mia ragione principale per chiederlo è che so che Bjarne Stroustrup ha detto che C ++ avrà un garbage collector a un certo punto nel tempo. Detto questo, perché non è stato aggiunto? …
Ho iniziato a studiare i puntatori intelligenti di C ++ 11 e non vedo alcun uso utile di std::weak_ptr. Qualcuno può dirmi quando std::weak_ptrè utile / necessario?
Sto cercando di memorizzare in un std::tuplenumero variabile di valori, che verranno successivamente utilizzati come argomenti per una chiamata a un puntatore a funzione che corrisponde ai tipi memorizzati. Ho creato un esempio semplificato che mostra il problema che sto lottando per risolvere: #include <iostream> #include <tuple> void f(int a, …
Breve esempio: #include <iostream> int main() { int n; [&](){n = 10;}(); // OK [=]() mutable {n = 20;}(); // OK // [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda std::cout << n << "\n"; // "10" } La domanda: perché abbiamo bisogno …
Come molte persone in questi giorni ho provato le diverse funzionalità offerte da C ++ 11. Uno dei miei preferiti è il "range-based per loop". Lo capisco: for(Type& v : a) { ... } È equivalente a: for(auto iv = begin(a); iv != end(a); ++iv) { Type& v = *iv; …
Ho un po 'di codice in un'intestazione che assomiglia a questo: #include <memory> class Thing; class MyClass { std::unique_ptr< Thing > my_thing; }; Se includo questa intestazione in un cpp che non include la Thingdefinizione del tipo, questo non viene compilato in VS2010-SP1: 1> C: \ Programmi (x86) \ Microsoft …
Sto preparando un piccolo vocabolario per ricordare un programma in cui le parole verrebbero trasmesse a me in modo casuale per significati. Voglio usare la libreria C ++ standard come ci dice Bjarne Stroustroup, ma ho riscontrato subito un problema apparentemente strano. Voglio cambiare un longnumero intero in std::stringmodo da …
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.