Donné : #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T>...
Donné : #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T>...
En C ++ 20, le concept de POD est déconseillé, soi-disant parce que c'est un trait composite insignifiant d'être trivial et de mise en page standard. Cependant, la définition du POD dans le projet C ++ 20 n'est pas exactement "à la fois triviale et standard"; c'est en fait: Une classe POD est une...
Disons que j'ai un shared_ptravec un allocateur personnalisé et un suppresseur personnalisé. Je ne trouve rien dans la norme qui parle de l'endroit où le suppresseur doit être stocké: il ne dit pas que l'allocateur personnalisé sera utilisé pour la mémoire du suppresseur, et il ne dit pas qu'il ne...
venant d'un arrière-plan principalement python, j'ai eu un peu de mal à travailler avec des types en C ++. J'essaie d'initialiser une variable de classe via l'un des constructeurs surchargés qui prennent différents types comme paramètres. J'ai lu que l'utilisation du automot - clé peut être...
[basic.scope.pdecl] / 1 du projet de norme C ++ 20 contenait l' exemple (non normatif) suivant dans une note (citation partielle d'avant la fusion de la demande de tirage 3580 , voir la réponse à cette question): unsigned char x = x; [...] x est initialisé avec sa propre valeur (indéterminée). Cela...
C ++ 20 permet d'utiliser le autotype de paramètre de fonction. Cela permet-il également d'utiliser autocomme espace réservé d'argument de modèle (pas similaire, mais dans l'esprit du modèle C ++ 17 <auto> d'une certaine manière) pour le type de paramètre de fonction? Donc le code suivant,...
J'ai trouvé que les résultats sont différents d'un compilateur à l'autre si j'utilise un lambda pour capturer une référence à une variable globale avec un mot clé mutable, puis modifie la valeur dans la fonction lambda. #include <stdio.h> #include <functional> int n = 100;...
J'ai écrit le code suivant qui utilise unique_ptr<Derived>où un unique_ptr<Base>est attendu class Base { int i; public: Base( int i ) : i(i) {} int getI() const { return i; } }; class Derived : public Base { float f; public: Derived( int i, float f ) : Base(i), f(f) {} float getF()...
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 //...
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...
Voici mon code: while (it!=s.end()) //here 's' is a set of stl and 'it' is iterator of set { *it=*it-sub; //'sub' is an int value it++; } Je ne peux pas mettre à jour la valeur de set by iterator. Je veux soustraire une valeur entière «sub» de tous les éléments de l'ensemble. Quelqu'un peut-il...
Supposons que vous souhaitiez utiliser les fonctionnalités C ++ <random>dans un programme pratique (pour une définition de "pratique" - les contraintes font en quelque sorte partie de cette question). Vous avez du code à peu près comme ceci: int main(int argc, char **argv) { int seed =...
#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...
Considérer int main() { auto a = new int[0]; delete[] a; // So there's no memory leak } Entre l'initialisation et la suppression de la copie, êtes-vous autorisé à lire le pointeur sur a + 1? En outre, la langue ne permet au compilateur de jeu aà
Je sais que cette question a déjà été posée plusieurs fois mais je n'ai pas trouvé de réponse pour ce cas particulier. Disons que j'ai une classe triviale qui ne possède aucune ressource et qui a un destructeur vide et un constructeur par défaut. Il a une poignée de variables membres avec...
Cppreference a cet exemple de code pour std::transform: std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); Mais cela dit aussi: std::transformne garantit pas l'application dans l'ordre de...
J'ai une fonction de modèle surchargée: template<typename T1, typename T2> auto overMax(T1 a, T2 b) { std::cout << __FUNCSIG__ << std::endl; return b < a ? a : b; } template<typename RT, typename T1, typename T2> RT overMax(T1 a, T2 b) { std::cout << __FUNCSIG__...
Je veux faire grosso modo ceci: Fil initial: écrire des valeurs dans les variables globales (elles ne seront plus jamais écrites) Il peut s'agir de données moyennement volumineuses (tableaux, chaînes, etc.). Ne peut pas être simplement fait std::atomic<>. engendrer d'autres threads Autres...
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
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,