Questions marquées «c++»

C ++ est un langage de programmation à usage général. Il a été initialement conçu comme une extension de C et a une syntaxe similaire, mais c'est maintenant un langage complètement différent. Utilisez cette balise pour les questions sur le code (à compiler) avec un compilateur C ++. Utilisez une balise spécifique à la version pour les questions liées à une révision standard spécifique [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20], etc.







4
Conversion implicite non autorisée au retour
#include <optional> bool f() { std::optional<int> opt; return opt; } Ne compile pas: 'return': cannot convert from 'std::optional<int>' to 'bool' Consultation de référence J'aurais pensé trouver une explication, mais je l'ai lu comme il se doit. Des conversions implicites sont effectuées chaque fois qu'une expression d'un certain type T1 est …

4
Comment appeler le bon constructeur d'un type de modèle?
Dans le code suivant, comment puis-je faire fonctionner la ligne commentée de la même manière que la ligne juste au-dessus? Je voudrais en faire un code générique, qui appelle le constructeur approprié d'un modèle Type. #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : …


1
Pourquoi l'initialisation agrégée GCC d'un tableau remplit-elle d'abord le tout avec des zéros, y compris des éléments non nuls?
Pourquoi gcc remplit-il le tableau entier avec des zéros au lieu des 96 entiers restants uniquement? Les initialiseurs non nuls sont tous au début du tableau. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the …


3
Fractionner un type std :: variant donné par un critère donné
Comment par un type de variante donné using V = std::variant<bool, char, std::string, int, float, double, std::vector<int>>; déclarer deux types de variantes using V1 = std::variant<bool, char, int, float, double>; using V2 = std::variant<std::string, std::vector<int>>; d'où V1inclut tous les types arithmétiques Vet V2inclut tous les types non arithmétiques V? V …
20 c++  c++17  std-variant 


1
Pourquoi {} comme argument de fonction ne conduit-il pas à l'ambiguïté?
Considérez ce code: #include <vector> #include <iostream> enum class A { X, Y }; struct Test { Test(const std::vector<double>&, const std::vector<int>& = {}, A = A::X) { std::cout << "vector overload" << std::endl; } Test(const std::vector<double>&, int, A = A::X) { std::cout << "int overload" << std::endl; } }; int …


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.