C ++ 17 est le nom du standard C ++ approuvé en 2017. Il s'appuie sur l'ancien standard C ++ 14, améliorant le langage de base et la bibliothèque standard, et ajoutant quelques nouvelles fonctionnalités de langage.
Y a-t-il des pièges pour des systèmes d'exploitation spécifiques, que je devrais connaître? Il existe de nombreux doublons ( 1 , 2 , 3 , 4 , 5 ) de cette question, mais ils ont reçu une réponse il y a des décennies. Les réponses très votées à nombre de …
Pour autant que je sache, C ++ 14 a été introduit std::make_uniquecar, en raison de la non-spécification de l'ordre d'évaluation des paramètres, ce n'était pas sûr: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Explication: si l'évaluation alloue d'abord la mémoire pour le pointeur brut, puis appelle g()et une exception est levée …
J'essaye d'utiliser les nouvelles fonctionnalités de c ++ 1z pour le développement dans gcc 6.0. Si j'essaye ce petit exemple: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit"; std::cout << "p1 = " << p1 << std::endl; } J'ai eu: / opt / …
Je viens de regarder Stephan T. Lavavej parler CppCon 2018de "Déduction d'argument de modèle de classe", où, à un moment donné, il dit incidemment: Dans le type C ++, les informations ne circulent presque jamais en arrière ... J'ai dû dire «presque» car il y a un ou deux cas, …
Lors de la réunion des normes Oulu ISO C ++ 2016, une proposition intitulée Élision de la copie garantie grâce à des catégories de valeurs simplifiées a été votée en C ++ 17 par le comité des normes. Comment fonctionne exactement l'élision de la copie garantie? Couvre-t-il certains cas où …
J'ai un projet qui utilise actuellement C ++ 11/14, mais il nécessite quelque chose comme std::filesystem, qui n'est disponible qu'en C ++ 17, et par conséquent je n'ai pas la chance de l'utiliser actuellement. Je vois, cependant, qu'il est disponible dans mon compilateur actuel en tant que std::experimental::filesystem. Est-ce une …
La norme C ++ 17 introduit des "guides de déduction de modèles". Je suppose qu'ils ont quelque chose à voir avec la nouvelle déduction d'arguments de modèle pour les constructeurs introduite dans cette version de la norme, mais je n'ai pas encore vu une explication simple, de style FAQ, de …
Dans le morceau de code suivant, j'utilise l' [[fallthrough]]attribut standard de C ++ 1z pour documenter qu'une chute est souhaitée: #include <iostream> int main() { switch (0) { case 0: std::cout << "a\n"; [[fallthrough]] case 1: std::cout << "b\n"; break; } } Avec GCC 7.1, le code se compile sans …
J'essaie de comprendre comment obtenir l'adresse d'une fonction lambda en elle-même. Voici un exemple de code: []() { std::cout << "Address of this lambda function is => " << ???? }(); Je sais que je peux capturer le lambda dans une variable et imprimer l'adresse, mais je veux le faire …
Ran dans quelque chose d'étrange lors de la métaprogrammation de modèle l'autre jour. Cela revient essentiellement à cette affirmation qui ne passe pas (comme je m'y attendais). static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); Au début, je pensais que je faisais une erreur syntaxique en définissant une référence de fonction, mais cette assertion passe, montrant …
Existe-t-il un moyen de vérifier si deux fonctions ont la même signature? Par exemple: int funA (int a, int b); int funB (int a, int b); float funC (int a, int b); int funD (float a, int b); Dans cet exemple, funAet funBest la seule combinaison de fonctions à renvoyer …
En C ++ 17, comment déclarer et initialiser un vecteur de paires (ou tuples) avec un élément optionnel? std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true}, {2, false}, {3, nullptr}}; J'ai une paire où le deuxième élément peut être nul / facultatif.
Ce code ne compile pas dans Clang (6,7,8,9, trunk), mais se compile très bien dans GCC (7.1, 8.1, 9.1): template<class T> struct TypeHolder { using type = T; }; template<int i> class Outer { private: template<class T> static constexpr auto compute_type() { if constexpr (i == 42) { return TypeHolder<bool>{}; …
Considérez le code suivant . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } Ici, le deuxième opérateur de conversion est choisi par la résolution de surcharge. Pourquoi? D'après ce que je comprends, …
Explicite. Fondamentalement, disons que j'ai des listes de types comme ceci: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Ils peuvent être des nombres variés de listes de types. Comment obtenir une liste de types de produits cartésiens? result = type_list< type_list<int, somestructB, double>, …
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.