Articles of c ++ 14

Le standard C ++ a-t-il changé en ce qui concerne l’utilisation de valeurs indéterminées et le comportement non défini dans C ++ 14?

Comme couvert dans Est-ce que l’initialisation implique la conversion de lvalue à rvalue? Est int x = x; UB? le standard C ++ a un exemple surprenant dans la section 3.3.2 Point de déclaration dans lequel un int est initialisé avec sa propre valeur indéterminée: int x = 12; { int x = x; } […]

C ++ fonction argument sécurité

Dans une fonction qui prend plusieurs arguments du même type, comment pouvons-nous garantir que l’appelant ne gâche pas la commande? Par exemple void allocate_things(int num_buffers, int pages_per_buffer, int default_value … et ensuite // uhmm.. lets see which was which uhh.. allocate_things(40,22,80,…

Est-ce que new et delete sont toujours utiles en C ++ 14?

Compte tenu de la disponibilité de make_unique et de make_shared , ainsi que de la suppression automatique par les destructeurs unique_ptr et shared_ptr , quelles sont les situations (hormis la prise en charge du code hérité) pour utiliser new et delete dans C ++ 14?

Itérer sur différents types

Vu le code suivant: struct Window{ void show(); //stuff }w1, w2, w3; struct Widget{ void show(); //stuff }w4, w5, w6; struct Toolbar{ void show(); //stuff }t1, t2, t3; Je veux show un tas d’éléments: for (auto &obj : {w3, w4, w5, t1}) obj.show(); Cependant, cela ne comstack pas car le std::initializer_list dans le for -loop […]

Y a-t-il un nom pour cet idiome de création de tuple?

Sur la liste de diffusion Boost , l’astuce suivante pour créer une entité de type tuple a été récemment publiée par @LouisDionne: #include auto list = [](auto …xs) { return [=](auto access) { return access(xs…); }; }; auto length = [](auto xs) { return xs([](auto …z) { return sizeof…(z); }); }; int main() { std::cout […]

Lambda-Over-Lambda en C ++ 14

Comment se termine / se termine l’appel récursif lambda? #include auto terminal = [](auto term) // ———+ }; }; auto main() -> int { auto hello =[](auto s){ fprintf(s,”Hello\n”); return s; }; auto world =[](auto s){ fprintf(s,”World\n”); return s; }; terminal(stdout) (hello) (world) ; return 0; } Qu’est-ce que je manque ici? Running code

Différences entre std :: make_unique et std :: unique_ptr

Est-ce que std::make_unique a des avantages d’efficacité comme std::makes_shared ? Comparé à la construction manuelle de std::unique_ptr : std::make_unique(1); // vs std::unique_ptr(new int(1));

Défaut, valeur et zéro initialisation

Je suis très confus à propos de l’initialisation value & default-& zero. et surtout quand ils utilisent les différents standards C ++ 03 et C ++ 11 (et C ++ 14 ). Je cite et essaie de donner une très bonne réponse Value- / Default- / Zero- Init C ++ 98 et C ++ 03 […]

Un pointeur avec la bonne adresse et le bon type est-il toujours un pointeur valide depuis C ++ 17?

(En référence à cette question et réponse .) Avant la norme C ++ 17, la phrase suivante était incluse dans [basic.compound] / 3 : Si un object de type T est situé à une adresse A, un pointeur de type cv T * dont la valeur est l’adresse A est dit pointer sur cet object, […]

Qu’est-ce qu’un const void?

La description de std::is_void indique que: Fournit la valeur de constante membre qui est égale à true, si T est le type void, const void, volatile void ou const volatile void. Alors, qu’est-ce qui pourrait être const void ou volatile void ? Cette réponse indique que le type de retour de const void serait invalide […]