Récemment apparu dans une revue de code qui dans l'exemple suivant: enum class A : uint8_t { VAL1, VAL2 }; ... std::vector<A> vOfA; // Assume this is sized and full of some stuff. std::memcpy(wire_buffer, vOfA.data(), vOfA.size() * sizeof(A)); Nous devrions utiliser sizeof(std::underlying_type<A>::type)au lieu de sizeof(A). Est-il possible que ceux-ci puissent …
Comme exercice, j'écris un analyseur pour Haskell à partir de zéro. En faisant le lexer, j'ai remarqué les règles suivantes sur le rapport Haskell 2010 : digit → ascDigit | uniDigit ascDigit → 0| 1| … | 9 uniDigit → tout octet de chiffre décimal Unicode → 0| 1| …
Je compile ce programme par g ++ et clang ++. Il y a une différence: g ++ affiche 1, mais clang ++ affiche 2. Il semble que g ++: la variable externe est définie dans la portée la plus courte. clang ++: la variable externe est définie dans la portée …
std::basic_iosa un constructeur public : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); OMI, la seule raison pour laquelle une classe a un constructeur public est d'utiliser une instance autonome de cette classe dans un programme. Si une classe existe uniquement pour que d'autres classes en descendent (comme cela semble être le cas pour …
Faut-il terminer un programme? En d'autres termes, un programme qui s'exécute pour toujours Comportement indéfini techniquement? Notez qu'il ne s'agit pas de boucles vides. Parler de programmes qui font des "trucs" (c'est-à-dire un comportement observable) pour toujours. Par exemple quelque chose comme ça: int main() { while (true) { try …
L'optimisation de la base vide est excellente. Cependant, il est livré avec la restriction suivante: L'optimisation de base vide est interdite si l'une des classes de base vide est également le type ou la base du type du premier membre de données non statique, car les deux sous-objets de base …
Est-ce un C ++ valide? int main() { constexpr auto sz = __func__ - __func__; return sz; } GCC et MSVC pensent que c'est OK, Clang pense que ce n'est pas le cas: Compiler Explorer . Tous les compilateurs conviennent que celui-ci est OK: Explorateur de compilateurs . int main() …
Je suis tombé sur ce comportement std::gcdque j'ai trouvé inattendu: #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << a …
J'ai du mal à comprendre le paragraphe suivant cité dans cppreference sur le constructeur par défaut trivial. J'ai recherché stackoverflow mais je n'ai toujours pas obtenu de réponse claire. Alors s'il vous plaît, aidez-moi. Un constructeur par défaut trivial est un constructeur qui n'effectue aucune action. Tous les types de …
Je veux écrire du code portable (Intel, ARM, PowerPC ...) qui résout une variante d'un problème classique: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } dans lequel l'objectif est d'éviter une situation dans laquelle les deux threads fontsomething . (Ce n'est pas …
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 …
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 …
MSVC, Clang et GCC sont en désaccord sur ce code: struct Base { int x; }; struct Der1 : public Base {}; struct Der2 : public Base {}; struct AllDer : public Der1, public Der2 { void foo() { Der1::Base::x = 5; } }; Godbolt GCC: <source>: In member function …
Considérez les trois structs suivants: class blub { int i; char c; blub(const blub&) {} }; class blob { char s; blob(const blob&) {} }; struct bla { blub b0; blob b1; }; Sur les plates-formes typiques où intest de 4 octets, les tailles, les alignements et le remplissage total …
Tout comme le titre l'indique: quelles garanties existe-t-il pour qu'une unité de retour de fonction Haskell soit évaluée? On pourrait penser qu'il n'est pas nécessaire d'exécuter une sorte d'évaluation dans un tel cas, le compilateur pourrait remplacer tous ces appels par une ()valeur immédiate à moins que des demandes explicites …
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.