En C ++, les entiers à largeur fixe sont définis comme facultatifs , mais je n'arrive pas à trouver la méthode recommandée pour vérifier s'ils sont réellement définis. Quelle serait une façon portable de vérifier si des entiers à largeur fixe sont disponibles?
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; std::function<int()> f() { int &m = …
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 = get_user_provided_seed_value(argc, argv); if …
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) : …
Existe-t-il un moyen de vérifier en C ++ 11 si une énumération est continue ? Il est tout à fait valide de donner des valeurs d'énumération qui ne le sont pas. Existe-t-il peut-être une fonctionnalité comme un trait de type en C ++ 14, C ++ 17 ou peut-être C …
Voici un morceau de code C ++. Dans cet exemple, de nombreux blocs de code ressemblent à des appels de constructeur. Malheureusement, le code de blocage # 3 ne l'est pas (vous pouvez le vérifier en utilisant https://godbolt.org/z/q3rsxn et https://cppinsights.io ). Je pense que c'est une ancienne notation C ++ …
En C ++ 20, std::swapdevient une constexprfonction. Je sais que la bibliothèque standard était vraiment en retard sur le langage pour marquer les choses constexpr, mais en 2017, elle <algorithm>était à peu près constante, tout comme un tas d'autres choses. Pourtant - std::swapne l'était pas. Je me souviens vaguement qu'il …
J'ai remarqué que globale liste initalization de std :: vecteur effectue l' initialisation de copie lors de déplacement est plus applicable. En même temps, plusieurs emplace_backs font ce que je veux. Je ne pouvais que trouver cette solution imparfaite d'écrire une fonction de modèle init_emplace_vector. Cependant, il n'est optimal que …
En lisant le livre C ++ Primer, je suis tombé sur cette déclaration: "Le nombre d'éléments dans un tableau fait partie du type du tableau." Je voulais donc savoir en utilisant le code suivant: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; …
J'ai un modèle de fonction qui prend de nombreux types différents en entrée. Parmi ces types, un seul a une getInt()fonction. Par conséquent, je veux que le code exécute la fonction uniquement pour ce type. Veuillez suggérer une solution. Merci #include <type_traits> #include <typeinfo> class X { public: int getInt(){ …
Dans la documentation de std::memory_ordersur cppreference.com, il y a un exemple de commande détendue: Commande détendue Les opérations atomiques marquées memory_order_relaxedne sont pas des opérations de synchronisation; ils n'imposent pas d'ordre entre les accès simultanés à la mémoire. Ils garantissent uniquement la cohérence de l'ordre d'atomicité et de modification. Par …
Le code suivant se compile avec gcc et clang (et de nombreux autres compilateurs C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = …
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.