Articles of c ++ 11

Comment faire pour appliquer le mot clé ‘override’?

Existe-t-il un moyen d’imposer l’utilisation du mot clé de override C ++ 11 dans Visual C ++ 2012? (c.-à-d. si j’oublie de dire override , alors je veux recevoir un avertissement / une erreur.)

Différences entre les variables conditionnelles, les mutex et les verrous

Par exemple les interfaces c ++ 0x J’ai du mal à déterminer quand utiliser l’une de ces choses (cv, mutex et lock). Quelqu’un peut-il s’il vous plaît expliquer ou pointer une ressource? Merci d’avance.

C ++ 11 static_assert et instanciation de modèle

En C ++ 11, le fonctionnement de static_assert dans un modèle doit-il dépendre de l’instanciation ou non de ce modèle? Par exemple, avec le code suivant template void sa() { static_assert(0,”Hello.”); } int main(int argc, char *argv[]) { return 0; } GCC 4.5.0 échouera à l’assertion et produira le “Hello” message. La version 8.42n de […]

Est-il judicieux d’ignorer l’avertissement «-Wmissing-braces» de gcc / clang?

Considérons le programme suivant: #include int main() { std::array x = { 0 }; // warning! x = { { 0 } }; // no warning return 0; } La première initialisation conduit à des avertissements sur gcc 4.7.2 … main.cpp:5:22: warning: unused variable ‘x’ [-Wunused-variable] … et clang 3.1 main.cpp:5:28: warning: suggest braces around […]

Utilisations de destructeur = supprimer;

Considérons la classe suivante: struct S { ~S() = delete; }; En bref et dans le but de la question: je ne peux pas créer d’instances de S comme S s{}; car je ne pouvais pas les détruire. Comme mentionné dans les commentaires, je peux toujours créer une instance en faisant S *s = new […]

Pourquoi ce code comstack-t-il (C ++ 11) sans erreur d’incompatibilité de type?

std::vector p = {“abc”, “def”}; “abc” et “def” ne sont pas des caractères, pourquoi le compilateur ne me donne-t-il pas une erreur à propos de cette incompatibilité de type?

Existe-t-il des astuces pour utiliser std :: cin pour initialiser une variable const?

Utilisation courante de std :: cin int X; cin >> X; Le principal inconvénient est que X ne peut pas être const . Il peut facilement introduire des bogues; et je cherche une astuce pour pouvoir créer une valeur const et y écrire une seule fois. La solution naïve // Naive int X_temp; cin >> […]

type et parenthèses

Je ne comprends pas la dernière ligne de l’exemple à la page 148 du FCD (§7.6.1.2 / 4): const int&& foo(); int i; struct A { double x; }; const A* a = new A(); decltype(foo()) x1 = i; // type is const int&& decltype(i) x2; // type is int decltype(a->x) x3; // type is […]

Quand les accolades externes peuvent-elles être omises dans une liste d’initialisation?

J’ai l’erreur C2078 dans VC2010 lors de la compilation du code ci-dessous. struct A { int foo; double bar; }; std::array a1 = // error C2078: too many initializers { {0, 0.1}, {2, 3.4} }; // OK std::array a2 = {0.1, 2.3}; J’ai découvert que la syntaxe correcte pour a1 est std::array a1 = {{ […]

Pourquoi cet exemple simple std :: thread ne fonctionne-t-il pas?

g++ -std=gnu++0x t1.cpp essayé l’exemple suivant compilé avec g++ -std=gnu++0x t1.cpp et g++ -std=c++0x t1.cpp mais tous les deux aboutissent à l’exemple. $ ./a.out terminate called after throwing an instance of ‘std::system_error’ what(): Aborted Voici l’échantillon: #include #include void doSomeWork( void ) { std::cout << "hello from thread…" << std::endl; return; } int main( int […]