Quelle est la bonne façon d'utiliser la plage basée sur C ++ 11 for? Quelle syntaxe utiliser? for (auto elem : container), ou for (auto& elem : container)ou for (const auto& elem : container)? Ou un
Quelle est la bonne façon d'utiliser la plage basée sur C ++ 11 for? Quelle syntaxe utiliser? for (auto elem : container), ou for (auto& elem : container)ou for (const auto& elem : container)? Ou un
Est-il possible de passer une fonction lambda en tant que pointeur de fonction? Si c'est le cas, je dois faire quelque chose de mal car je reçois une erreur de compilation. Considérez l'exemple suivant using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {}...
Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2 Voici un exemple d'un morceau de code C ++ 11: auto text = std::unique_ptr<char[]>(new char[len]); L'éditeur Eclipse se plaint de: Function 'unique_ptr' could not be resolved La compilation Makefile fonctionne très bien. Comment empêcher Eclipse de se...
Il est parfois affirmé que C ++ 11/14 peut vous aider à améliorer vos performances même lorsque vous compilez simplement du code C ++ 98. La justification se situe généralement dans le sens de la sémantique de déplacement, car dans certains cas, les constructeurs rvalue sont générés automatiquement...
Sera-ce l'exemple: #include <iostream> using namespace std; int main() { cout << "Hola, moondo.\n"; } Il jette l'erreur: gcc -c main.cpp gcc -o edit main.o main.o: In function `main': main.cpp:(.text+0xa): undefined reference to `std::cout' main.cpp:(.text+0xf): undefined reference to...
Chaque conteneur standard a une méthode beginet endpour retourner des itérateurs pour ce conteneur. Cependant, C ++ 11 a apparemment introduit des fonctions libres appelées std::beginet std::endqui appellent les fonctions membres beginet end. Donc, au lieu d'écrire auto i = v.begin(); auto e =...
Je veux avoir un static const chartableau dans ma classe. GCC s'est plaint et m'a dit que je devrais utiliser constexpr, bien que maintenant il me dise que c'est une référence indéfinie. Si je fais du tableau un non-membre, il se compile. Que se passe-t-il? // .hpp struct foo { void bar(); static...
Si j'ai une variable à l'intérieur d'une fonction (par exemple, un grand tableau), est-il logique de la déclarer à la fois staticet constexpr? constexprgarantit que le tableau est créé au moment de la compilation, serait- staticil inutile? void f() { static constexpr int x [] = { // a few thousand...
Avec la nouvelle norme, il existe de nouvelles façons de faire les choses, et beaucoup sont plus agréables que les anciennes méthodes, mais l'ancienne méthode est toujours bonne. Il est également clair que la nouvelle norme n'est pas officiellement obsolète, pour des raisons de compatibilité...
Pourquoi la fonction inverse de la std::listclasse dans la bibliothèque standard C ++ a-t-elle une exécution linéaire? Je pense que pour les listes à double liaison, la fonction inverse aurait dû être O (1). Inverser une liste à double lien devrait simplement impliquer de changer la tête et les...
J'ai mis mes compétences C ++ sur l'étagère il y a plusieurs années et il semble que maintenant, quand j'en ai à nouveau besoin, le paysage a changé. Nous avons maintenant C ++ 11, et je crois comprendre qu'il chevauche de nombreuses fonctionnalités Boost. Existe-t-il un résumé de ces...
Avec l'arrivée du nouveau standard (et des pièces déjà disponibles dans certains compilateurs), le nouveau type std::unique_ptrest censé remplacer std::auto_ptr. Leur utilisation se chevauche-t-elle exactement (pour que je puisse faire une recherche / remplacement globale sur mon code (non pas que...
Je me demande pourquoi cbeginet cendont été introduits dans C ++ 11? Quels sont les cas où l'appel de ces méthodes fait une différence par rapport aux surcharges const de beginet
[dcl.attr.noreturn] fournit l'exemple suivant: [[ noreturn ]] void f() { throw "error"; // OK } mais je ne comprends pas à quoi ça sert [[noreturn]], car le type de retour de la fonction est déjà void. Alors, quel est l'intérêt de l' noreturnattribut? Comment est-il censé être...
J'ai ce code qui ne fonctionne pas, mais je pense que l'intention est claire: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const...
Quelles sont les raisons de l'existence de std::decay? Dans quelles situations est-il
J'ai lu et entendu que C ++ 11 prend en charge Unicode. Quelques questions à ce sujet: Dans quelle mesure la bibliothèque standard C ++ prend-elle en charge Unicode? Fait std::stringce qu'il doit faire? Comment l'utiliser? Où sont les problèmes potentiels?
Cette réponse de @R. Martinho Fernandes montre que l'idiome safe-bool est apparemment obsolète en C ++ 11, car il peut être remplacé par un simple explicit operator bool() const; selon le devis standard dans la réponse §4 [conv] p3: Une expression e peut être implicitement convertie en un type Tsi...
Comment supprimer une carte lors de son itération? comme: std::map<K, V> map; for(auto i : map) if(needs_removing(i)) // remove it from the map Si je l'utilise, map.erasecela invalidera les
Utilisation de C ++ 11, Ubuntu 14.04, la chaîne d'outils par défaut de GCC . Ce code échoue: constexpr std::string constString = "constString"; erreur: le type 'const string {aka const std :: basic_string}' de la variable constexpr 'constString' n'est pas littéral ... parce que ... 'std ::...