Questions marquées «c++11»

Utilisez cette balise pour le code qui doit être compilé en C ++ 11 (sans utiliser les fonctionnalités introduites en C ++ 14 ou version ultérieure).



3
Différence de comportement de la capture mutable de la fonction lambda d'une référence à une variable globale
J'ai trouvé que les résultats sont différents d'un compilateur à l'autre si j'utilise un lambda pour capturer une référence à une variable globale avec un mot clé mutable, puis modifie la valeur dans la fonction lambda. #include <stdio.h> #include <functional> int n = 100; std::function<int()> f() { int &m = …


4
Comment appeler le bon constructeur d'un type de modèle?
Dans le code suivant, comment puis-je faire fonctionner la ligne commentée de la même manière que la ligne juste au-dessus? Je voudrais en faire un code générique, qui appelle le constructeur approprié d'un modèle Type. #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : …

4
Énumération continue C ++ 11
Existe-t-il un moyen de vérifier en C ++ 11 si une énumération est continue ? Il est tout à fait valide de donner des valeurs d'énumération qui ne le sont pas. Existe-t-il peut-être une fonctionnalité comme un trait de type en C ++ 14, C ++ 17 ou peut-être C …
17 c++  c++11  c++14  c++17  c++20 

2
Est-ce un ancien constructeur de style C ++?
Voici un morceau de code C ++. Dans cet exemple, de nombreux blocs de code ressemblent à des appels de constructeur. Malheureusement, le code de blocage # 3 ne l'est pas (vous pouvez le vérifier en utilisant https://godbolt.org/z/q3rsxn et https://cppinsights.io ). Je pense que c'est une ancienne notation C ++ …
17 c++  c++11 

3
Modèles variadiques: dépliez les arguments en groupes
J'ai une fonction qui prend deux arguments: template <typename T1, typename T2> void foo(T1 arg1, T2 arg2) { std::cout << arg1 << " + " << arg2 << '\n'; } Et un variadic qui devrait transmettre ses arguments par paires: template <typename... Args> void bar(Args&&... args) { static_assert(sizeof...(Args) % 2 …


3
Tri d'un vecteur par ordre décroissant dans deux plages
Disons que j'ai un vecteur d'entiers: std::vector<int> indices; for (int i=0; i<15; i++) indices.push_back(i); Ensuite, je le trie par ordre décroissant: sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];}) for (int i=0; i<15; i++) printf("%i\n", indices[i]); Cela produit les éléments suivants: 14 13 12 11 10 9 …

1
Puis-je list-initialiser std :: vector avec une transmission parfaite des éléments?
J'ai remarqué que globale liste initalization de std :: vecteur effectue l' initialisation de copie lors de déplacement est plus applicable. En même temps, plusieurs emplace_backs font ce que je veux. Je ne pouvais que trouver cette solution imparfaite d'écrire une fonction de modèle init_emplace_vector. Cependant, il n'est optimal que …

3
Pourquoi la dimension d'un tableau fait-elle partie de son type?
En lisant le livre C ++ Primer, je suis tombé sur cette déclaration: "Le nombre d'éléments dans un tableau fait partie du type du tableau." Je voulais donc savoir en utilisant le code suivant: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; …
14 c++  arrays  c++11 

3
Exécuter la fonction à l'intérieur du modèle de fonction uniquement pour les types ayant la fonction définie
J'ai un modèle de fonction qui prend de nombreux types différents en entrée. Parmi ces types, un seul a une getInt()fonction. Par conséquent, je veux que le code exécute la fonction uniquement pour ce type. Veuillez suggérer une solution. Merci #include <type_traits> #include <typeinfo> class X { public: int getInt(){ …

4
L'explication de l'ordre détendu est-elle erronée dans la référence?
Dans la documentation de std::memory_ordersur cppreference.com, il y a un exemple de commande détendue: Commande détendue Les opérations atomiques marquées memory_order_relaxedne sont pas des opérations de synchronisation; ils n'imposent pas d'ordre entre les accès simultanés à la mémoire. Ils garantissent uniquement la cohérence de l'ordre d'atomicité et de modification. Par …

1
Bogue du compilateur possible dans MSVC
Le code suivant se compile avec gcc et clang (et de nombreux autres compilateurs C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = …
13 c++  c++11  visual-c++ 

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.