Où dans la norme est a = b + {1, 2} interdit ci-dessous? class complex { double re, im; public: complex(double r, double i) : re{ r }, im{ i } {} complex& operator+=(const complex& other) { re += other.re; im += other.im; return *this; } }; inline complex operator+(complex lhs, const complex& rhs) { […]
Considérons le code suivant: (Ideone) struct S { int a() {return 0;} decltype(a()) b() {return 1;} }; Cela me donne l’erreur suivante: erreur: impossible d’appeler la fonction membre ‘int S :: a ()’ sans object D’autre part, ce code comstack bien: (Ideone) struct S { int a() {return 0;} auto b() -> decltype(a()) {return 1;} […]
Le code suivant est compilé avec succès avec g ++ version 5.1.0. Notez la catch sans try correspondant dans la fonction membre foo::bar() . Je me demandais si cette syntaxe était légale et si oui, quel effet avait-elle? struct foo { void bar() { } catch (…) { } }; int main () { foo […]
Selon la norme C ++ 03, est-il valide d’avoir des références à des types incomplets? Je ne suis au courant d’aucune implémentation qui implémente des références comme des pointeurs autres que des pointeurs non nuls. Ce code devrait donc fonctionner. Cependant, je me demande si les références à des types incomplets sont conformes à la […]
Il y a une citation de 5.2.4 / 1 de N3797 , le brouillon final de travail de C ++ 14: Utilisation d’un pseudo-destructeur-nom après un point. ou flèche -> opérateur représente le destructeur pour le type non-classe désigné par nom-type ou decltype-specifier. Question Pour quel type on peut considérer pseudo-destructor-name , est-ce seulement enum-type […]
class A { public: int a; }; class B:public A { public: int b; void foo() { b=a*a; } }; int _tmain(int argc, _TCHAR* argv[]) { A * a=new A; a->a=10; ((B*)a)->foo(); cout<b; } Cela fonctionne pour b=100 , mais je ne sais pas par quelles règles cela fonctionne. Où est-ce que b est stocké? […]
de cette question (toujours pas résolu) je tombe sur ce nouveau problème, alors voici un exemple //main.cpp int main() { return 0; } //file1.cpp #include “bh” B b; //file2.cpp #include “ah” A a; //ah #pragma once #include #include “bh” extern B b; class A { public: A(){ std::cout << "a cotr" << std::endl;b.Use(); } }; […]
Y at-il quelque chose dans la norme qui définit l’initialisation d’une variable à partir de la variable qu’elle ombre? Par exemple: int i = 7; { int i = i; } Visual Studio 2013 permet cela sans avertissement et fonctionne comme prévu. La variable i interne est 7. Clang et GCC me préviennent toutefois qu’une […]
Prenez le fragment de code suivant. short int a, b = 30001, c = 30002, d = 30003; a = b + c – d; Supposons que short int est de 16 bits et int de 32 bits. Ce comportement est-il indéfini en C ++? Mon interprétation de la norme C est que b et […]
Je souhaite reprendre une question sur la base de la réponse et de la discussion suivante sur: Pourquoi une référence à un membre de données non statique n’est-elle pas une variable? : Un membre de données non statique de la classe ne crée pas de nouvelle variable, il vous aide simplement à définir les propriétés […]