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.
Le programme suivant est-il bien formé? #include <vector> struct A { explicit A(int) {} }; int main() { std::vector<int> vi = {1, 2, 3, 4, 5}; std::vector<A> va(vi.begin(), vi.end()); } Selon C ++ 17 [sequence.reqmts], l'exigence de X u(i, j); où Xest un conteneur de séquence, est: Tdoit être EmplaceConstructibleà …
Je suis curieux de savoir comment ça nullptrmarche. Les normes N4659 et N4849 stipulent: il doit avoir du type std::nullptr_t; vous ne pouvez pas prendre son adresse; il peut être directement converti en pointeur et pointeur en membre; sizeof(std::nullptr_t) == sizeof(void*); sa conversion en boolest false; sa valeur peut être …
Lorsque nous voulons utiliser un static_assertdans un, if constexprnous devons rendre la condition dépendante d'un paramètre de modèle. Fait intéressant, gcc et clang ne sont pas d'accord lorsque le code est enveloppé dans un lambda. Le code suivant se compile avec gcc, mais clang déclenche l'assertion, même si le if …
J'essaie de comprendre les types d'expression de C ++ et plus je lis, plus je suis confus, car je trouve le brouillon C ++ très difficile à digérer et préfère donc d'autres ressources mais elles se contredisent ou ne tiennent pas compte du fait que le la formulation et la …
tl; dr: Je pense que mon static_vector a un comportement indéfini, mais je ne le trouve pas. Ce problème est sur Microsoft Visual C ++ 17. J'ai cette implémentation static_vector simple et inachevée, c'est-à-dire un vecteur avec une capacité fixe qui peut être allouée en pile. Il s'agit d'un programme …
Évidemment, nous pouvons concaténer deux littéraux de chaîne dans une constexprfonction, mais qu'en est-il de la concaténation d'un littéral de chaîne avec une chaîne renvoyée par une autre constexprfonction comme dans le code ci-dessous? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return "1"; …
Je cherche un moyen d'identifier les lambdas vides (sans capture) des autres lambdas dans une fonction de modèle. J'utilise actuellement C ++ 17 mais je suis également curieux de connaître les réponses C ++ 20. Mon code ressemble à ceci: template<typename T> auto func(T lambda) { // The aguments of …
La question suivante est liée, mais les réponses sont anciennes, et le commentaire de l'utilisateur Marc Glisse suggère qu'il existe de nouvelles approches depuis C ++ 17 à ce problème qui pourraient ne pas être discutées de manière adéquate. J'essaie de faire fonctionner correctement la mémoire alignée pour SIMD, tout …
Lorsque vous faites appel std::sort()à std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } Gcc et clang renvoient tous deux une erreur sur le tri sur std::array- clang dit erreur: utilisation de l'identifiant …
Mon scénario est le suivant (cela a fonctionné en clang mais pas en gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Le problème est que la variable en ligne affichait 0 aux endroits où je m'attendais à …
Ce qui suit ne se compile pas : #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Essayez-le sur Godbolt L'erreur du compilateur est: error: assignment of read-only reference 's' Maintenant, …
Je n'ai pas l'habitude de l'utiliser weak_ptret je suis confronté à une situation assez déroutante. J'utilise Intel XE 2019 Composer update 5 ( package 2019.5.281 ) en combinaison avec Visual Studio 2019 ver. 16.2.5 . Je compile en 64 bits. J'utilise le standard C ++ 17 . Voici le code …
Si je ne me trompe pas, je peux faire std::transformfonctionner en place en utilisant la même plage qu'un itérateur d'entrée et de sortie. Supposons que j'ai un std::vectorobjet vec, alors j'écrirais std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) en utilisant une opération unaire appropriée unary_op. En utilisant la norme C ++ 17, je voudrais exécuter la …
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.