Articles of c ++ 11

Une fonction peut-elle être une fonction supprimée?

Le brouillon indique explicitement que les fonctions par défaut doivent être des fonctions membres spéciales (par exemple, constructeur de copie, constructeur de défaut, etc. (§8.4.2.1-1)). Ce qui est parfaitement logique. Cependant, je ne vois aucune ressortingction de ce type concernant les fonctions supprimées (§8.4.3). Est-ce correct? Ou, en d’autres termes, ces trois exemples sont-ils valides […]

Obtenir la taille de la variable membre

S’il existe une structure POD , avec certaines variables membres, par exemple, comme ceci: struct foo { short a; int b; char c[50]; // … }; Existe-t-il un moyen d’obtenir la taille d’une variable membre en octets sans créer d’object de ce type? Je sais que cela fonctionnera: foo fooObj; std::cout << sizeof( fooObj.a ) […]

Utiliser auto avec la liste d’initialisation

J’ai une question concernant l’interaction entre auto et la liste d’initialisation. Exemple de code: #include int main() { auto a{ 1 }; auto b = { 1 }; auto c = 1; std::cout << typeid(a).name() << std::endl; std::cout << typeid(b).name() << std::endl; std::cout << typeid(c).name() << std::endl; return 0; } Donne la sortie: int class […]

Fonction d’appel à partir de la scope dérivée

J’ai un code qui semble similaire à ceci: #include class Base { public: void test() { std::cout << "Base::test()" << std::endl; } void test2() { test(); } }; class Derived : public Base { public: void test() { std::cout << "Derived::test()" << std::endl; } }; int main() { Derived d; d.test2(); return 0; } Maintenant, […]

Multithreading C ++: l’initialisation d’un thread lambda statique local est-elle sûre?

La norme C ++ 11 indique à propos de l’initialisation d’une variable statique locale qu’elle est censée être thread-safe ( http://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables ). Ma question concerne ce qui se passe exactement quand un lambda est initialisé en tant que variable locale statique? Considérons le code suivant: #include #include int doSomeWork(int input) { static auto computeSum = […]

Code non standard ou erreur g ++?

D’accord j’ai développé du code; Lien (c’est plutôt long) Et lorsque je le comstack avec Clang ++ 3.2, il s’exécute et aboutit; stdout: print: C-3PO print: R2D2 Cependant, si j’essaie de le comstackr avec G ++ 4.7.2, j’obtiens ces erreurs. Compilation finished with errors: source.cpp: In function ‘int main()’: source.cpp:90:71: error: no matching function for […]

Définir des interfaces pour des fonctions qui n’acceptent que des fonctions

Définissez (f + g) comme signifiant (f + g) (x): = f (x) + g (x). L’ajout d’une masortingce conventionnelle est conforme à cette définition. Voici une implémentation naïve template auto operator+(Funcf f, Funcg g){ return [f, g](auto x){return f(x) + g(x);}; } Cela échoue car l’ operator+ ne consum que des types définis par […]

Relation entre l’opérateur d’insertion ostream et sa surcharge non-membre

int i=0; std::cout << i; 1, la surcharge non-membre (deux arguments, l’un étant ostream et l’autre étant le type d’opérande, par exemple, int) est définie dans l’espace de noms std. Donc, si vous using namespace std; n’est pas présent, je ne vois absolument pas que la surcharge non-membre puisse être appelée. 2, si à la […]

Encore un autre problème de centralité entre deux BGL

En m’appuyant sur cette réponse, j’ai essayé d’implémenter la centralité d’Insity comme suit: typedef struct vpr_ { int id; } VProp; typedef boost::adjacency_list graph_t; boost::shared_array_property_map<double, boost::property_map::const_type> centrality_map(num_vertices(g), get(VProp::id, g)); Mais l’erreur suivante a été renvoyée. In file included from /usr/local/include/boost/graph/adjacency_list.hpp:246:0, from /usr/local/include/boost/graph/random.hpp:23, from ../../src/graph/Graph.h:25, from Graph.cpp:23: /usr/local/include/boost/graph/detail/adjacency_list.hpp: In instantiation of ‘struct boost::adj_list_any_vertex_pa::bind_<int, boost::adjacency_list, vpr_>’: /usr/local/include/boost/graph/detail/adjacency_list.hpp:2568:12: […]

Un argument de constructeur lambda C ++ peut-il capturer la variable construite?

Le comstack suivant. Mais y a-t-il jamais un problème de référence? class Foo { Foo(std::function fn) { /* etc */ } } void f(int i, Foo& foo) { /* stuff with i and foo */ } Foo foo([&foo](int i){f(i, foo);}); Semble travailler. (Le vrai lambda est bien sûr plus compliqué.)