J'ai le code suivant: template <typename TC> class C { struct S { template <typename TS> void fun() const {} }; void f(const S& s) { s.fun<int>(); } }; // Dummy main function int main() { return 0; } Lors de la construction de ceci avec gcc 9.2 et clang …
J'ai rencontré ce problème en essayant de spécialiser tuple_size/ tuple_elementpour une classe personnalisée en C ++ 17 pour la liaison structurée. Le code ci-dessous se compile dans GCC, mais pas dans clang (les deux versions de tronc, voir le lien ci-dessous). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = …
Je sais que c'est un sujet assez courant, mais autant que l'UB typique est facile à trouver, je n'ai pas trouvé cette variante jusqu'à présent. Donc, j'essaie d'introduire formellement des objets Pixel tout en évitant une copie réelle des données. Est-ce valable? struct Pixel { uint8_t red; uint8_t green; uint8_t …
Peut int (*)[]être un type incomplet? C 2018 6.2.5 1 dit: À divers points d'une unité de traduction, un type d'objet peut être incomplet (manque d'informations suffisantes pour déterminer la taille des objets de ce type) ou complet (avoir suffisamment d'informations). Il semble donc que si la taille d'un type …
La spécification C ++ spécifie-t-elle l'ordre operator newet le constructeur de Ain new C(A()). Le g ++ laisse l'ordre être A()-> new-> C(), mais clang ++ le laisse être new-> A()-> C(). La différence est-elle causée par un comportement non spécifié? g ++: 7.4.0 clang ++: 10.0.0 #include <iostream> #include …
J'essaie de comprendre les extraits de code suivants Extrait # 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Ni gcc9 ni clang9 ne génèrent d'erreur ici. Q. Pourquoi ce code est-il compilé? N'instancions-nous pas A<B>en héritant de B? …
L'expression «survient avant» est utilisée plusieurs fois dans le projet de norme C ++. Par exemple: Résiliation [basic.start.term] / 5 Si l'achèvement de l'initialisation d'un objet avec une durée de stockage statique se produit fortement avant un appel à std :: atexit (voir, [support.start.term]), l'appel à la fonction est passé …
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.