Articles of c ++ 14

Avantages de l’utilisation de std :: make_unique sur l’opérateur new

Quels sont les avantages d’utiliser std::make_unique sur l’opérateur new pour initialiser un std::unique_ptr ? En d’autres termes, pourquoi std::unique_ptr a = std::make_unique(SomeObject(…)) mieux que de faire std::unique_ptr a = new SomeObject(…) J’ai essayé de regarder en ligne beaucoup et je sais que c’est une bonne règle de base pour éviter l’opérateur new en C ++ […]

Existe-t-il une raison pour std :: array de taille zéro dans C ++ 11?

Considérons le morceau de code suivant, qui est parfaitement acceptable par un compilateur C ++ 11: #include #include auto main() -> int { std::array A; for(auto i : A) std::cout << i << std::endl; return 0; } Selon la norme § 23.3.2.8 [ rangées de taille zéro ]: 1 tableau doit prendre en charge le […]

Génération d’une séquence de zéros au moment de la compilation

J’ai le problème suivant: template class A { public: // … void foo() { bar( /* 0,…,0 <- sizeof…(N_i) many */); } }; Je veux appeler une bar fonction et lui passer sizeof…(N_i) nombreux arguments qui sont tous des zéros, par exemple, bar(0,0,0) dans la sizeof…(N_i) == 3 casse de sizeof…(N_i) == 3 . Comment […]

Comstackr c ++ 14-code avec g ++

J’utilise g ++ 4.8.4 sur Ubuntu 14.04 LTS. En essayant de comstackr avec ‘-std = c ++ 14‘, j’obtiens cette erreur: g++: error unrecognized command line option ‘-std=c++14′ Comstackr avec ‘-std = c ++ 11’ fonctionne bien, donc je ne suis pas sûr de ce qui se passe. Est-ce que g ++ n’a pas encore […]

Destructeur C ++ avec retour

En C ++ si on définit un destructeur de classe comme: ~Foo(){ return; } En appelant ce destructeur, l’object de Foo sera-t-il détruit ou retournera-t-il explicitement du destructeur, ce qui signifie que nous ne voulons plus jamais le détruire. Je veux faire en sorte qu’un certain object ne soit détruit que par un autre destructeur […]

Comment créer une fonction std :: à partir d’une expression lambda à capture de mouvement?

J’essaie de créer une std::function partir d’une expression lambda à capture de mouvement. Notez que je peux créer une expression lambda sans capture de mouvement. c’est seulement quand j’essaye de l’envelopper dans une std::function que j’obtiens une erreur. Par exemple: auto pi = std::make_unique(0); // no problems here! auto foo = [q = std::move(pi)] { […]

Y a-t-il un moyen d’itérer sur au plus N éléments en utilisant une boucle basée sur la distance?

Je voudrais savoir s’il y a un bon moyen d’itérer sur au plus N éléments dans un conteneur en utilisant la plage basée sur la boucle et / ou les algorithmes de la bibliothèque standard (c’est le but entier, je sais que je peux utiliser le “pour la boucle avec une condition). Fondamentalement, je recherche […]

Quelle est la nature des littéraux binarys en C ++ 14?

J’ai essayé de chercher autour de moi mais je n’ai pas pu trouver beaucoup de choses sur les littéraux binarys et l’endianness. Les littéraux binarys sont-ils peu endian, big-endian ou autre chose (par exemple, correspondre à la plate-forme cible)? Par exemple, quelle est la valeur décimale de 0b0111 ? Est-ce que c’est 7? Plateforme spécifique? […]

Pourquoi pas d’iterators d’emplacement en C ++ 11 ou C ++ 14?

C ++ 98 possède les fonctions front_inserter , back_inserter et inserter , mais il ne semble pas y avoir de version de leur emplacement dans C ++ 11 ou dans le brouillon C ++ 14. Y a-t-il une raison technique pour laquelle nous ne pourrions pas avoir front_emplacer , back_emplacer et emplacer ?

Conversion de std :: unique_ptr en std :: unique_ptr

Disons que j’ai des fonctions d’usine traitant des classes de base et dérivées: #include using namespace std; struct B { virtual ~B() {} }; struct D : B {}; unique_ptr MakeB() { auto b = unique_ptr( new B() ); return b; // Ok! } unique_ptr MakeD() { auto d = unique_ptr( new D() ); return […]