Articles of c ++ 11

Est-ce que implique que toutes les variables locales seront copiées?

Lorsque j’écris un lambda avec [=] , cela signifie-t-il que toutes mes variables locales seront copiées dans les membres de la structure créée ou puis-je supposer que seules celles qui seront réellement utilisées dans le lambda? Par exemple: void f() { vector v(10000); const int n = 5; const int DivByNCnt = count_if(istream_iterator(cin), istream_iterator(), [=](int […]

Comment Boost peut-il être utilisé pour obtenir des types de retour automatique de style C ++ 14?

Supposons que j’ai une fonction qui ajoute deux valeurs ensemble. Si je ne sais rien des types, je dois essentiellement écrire ma fonction deux fois; une fois dans la valeur de retour réelle et à nouveau comme spécificateur de type de retour: template auto Add(const A& a, const B& b) ->std::decay::type { return a + […]

Puis-je généralement / toujours utiliser std :: forward au lieu de std :: move?

J’ai regardé le discours de Scott Meyers sur les références universelles de la conférence C ++ et Beyond 2012, et tout a un sens jusqu’ici. Cependant, un membre du public pose une question à environ 50 minutes, à propos de laquelle je me posais également des questions. Meyers dit qu’il ne se soucie pas de […]

Est-ce que toutes les fonctions setter de C ++ 11 devraient être écrites en tant que modèles de fonction acceptant des références universelles?

Considérons une classe X avec N variables membres, chacune de type copiable et mobile , et N fonctions de réglage correspondantes. En C ++ 98, la définition de X ressemblerait probablement à ceci: class X { public: void set_a(A const& a) { _a = a; } void set_b(B const& b) { _b = b; } […]

Comment la nouvelle boucle basée sur la plage dans C ++ 17 aide Ranges TS?

Le comité a modifié la boucle basée sur la plage à partir de: C ++ 11: { auto && __range = range_expression ; for (auto __begin = begin_expr, __end = end_expr; __begin != __end; ++__begin) { range_declaration = *__begin; loop_statement } } en C ++ 17: { auto && __range = range_expression ; auto __begin […]

Un constructeur de déplacement `= default` est-il équivalent à un constructeur de déplacement basé sur les membres?

Est-ce struct Example { int a, b; Example(int mA, int mB) : a{mA}, b{mB} { } Example(const Example& mE) : a{mE.a}, b{mE.b} { } Example(Example&& mE) : a{move(mE.a)}, b{move(mE.b)} { } Example& operator=(const Example& mE) { a = mE.a; b = mE.b; return *this; } Example& operator=(Example&& mE) { a = move(mE.a); b = move(mE.b); […]

Quelle est la méthode recommandée pour aligner la mémoire en C ++ 11

Je travaille sur une mise en œuvre de tampon circulaire unique pour un seul producteur. J’ai deux exigences: 1) Alignez une seule instance de mémoire tampon en anneau allouée sur une ligne de cache. 2) Aligner un champ dans un tampon circulaire sur une ligne de cache (pour éviter un partage erroné). Ma classe ressemble […]

Pourquoi ne peut pas se confondre avec libc ++ en mode c ++ 0x lier cet exemple boost :: program_options?

Comstackr cet exemple de code pour boost :: program_options: http://svn.boost.org/svn/boost/trunk/libs/program_options/example/first.cpp … sur MacOS Lion (10.7.2), en utilisant boost-1.48.0 installé avec MacPorts: $ clang++ -v Apple clang version 3.0 (tags/Apple/clang-211.12) (based on LLVM 3.0svn) Target: x86_64-apple-darwin11.2.0 Thread model: posix $ clang++ -std=c++0x –stdlib=libc++ -lc++ -I/opt/local/include -L/opt/local/lib -lboost_program_options first.cpp -o first Undefined symbols for architecture x86_64: “boost::program_options::options_description::options_description(std::__1::basic_ssortingng<char, […]

Comment implémenter un singleton multithread sécurisé en C ++ 11 sans utiliser

Maintenant que C ++ 11 est multithreading, je me demandais quelle est la manière correcte d’implémenter un singleton initialisé paresseux sans utiliser de mutex (pour des raisons de perf). Je suis venu avec ceci, mais je ne suis pas vraiment bon à écrire le code de lockfree, ainsi je cherche de meilleures solutions. // ConsoleApplication1.cpp […]

Comment puis-je sortinger deux vecteurs de la même manière, avec des critères qui utilisent un seul des vecteurs?

Comment puis-je sortinger deux vecteurs de la même manière, avec des critères qui utilisent un seul des vecteurs? Par exemple, supposons que j’ai deux vecteurs de même taille: vector vectorA; vector vectorB; Je sortinge ensuite les vectorA utilisant une fonction de comparaison. Ce sorting a réorganisé le vectorA . Comment puis-je appliquer le même réordonnancement […]