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 autre?
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 plaindre de ce genre d'erreurs?
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} {} private: DecisionFn _dec; …
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 ou font …
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 = v.end(); tu écrirais auto i = …
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 { …
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 …
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é descendante. La question qui reste …
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 chevauchements, …
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 pointeurs …
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 le ferais, mais si je le faisais)) ou …
[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 utilisé?
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 end?
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 A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); …
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.