Questions marquées «auto»

Le mot-clé `auto` a été réutilisé en C ++ 11 pour un type déduit. Lorsqu'elle est utilisée pour remplacer un nom de type dans une déclaration de variable initialisée, la variable reçoit le même type que l'initialiseur. Lorsqu'il est utilisé comme type de retour, le type de retour est spécifié comme type de retour de fin ou déduit de l'expression de retour.

168
Que nous dit auto &&?

Si vous lisez du code comme auto&& var = foo(); où fooest toute fonction retournant par valeur de type T. Alors varest une lvalue de type rvalue référence à T. Mais qu'est-ce que cela implique var? Cela signifie-t-il que nous sommes autorisés à voler les ressources de var? Existe-t-il des...

151
Quelles sont les utilisations de decltype (auto)?

На этот вопрос есть ответы на Stack Overflow на русском : Конструкция decltype (auto) Dans C ++ 14, l' decltype(auto)idiome est introduit. En règle générale, son utilisation est d' autoriser les autodéclarations à utiliser les decltyperègles sur l'expression donnée . En recherchant des exemples de...

145
Mot-clé auto C ++. Pourquoi est-ce magique?

De tout le matériel que j'ai utilisé pour apprendre le C ++, autoa toujours été un spécificateur de durée de stockage étrange qui ne servait à rien. Mais récemment, j'ai rencontré du code qui l'utilisait comme nom de type en soi. Par curiosité, je l'ai essayé, et cela suppose le type de tout ce que...

128
opérateur de flèche (->) dans l'en-tête de fonction

Je suis tombé sur le code suivant: template <typename T, typename T1> auto compose(T a, T1 b) -> decltype(a + b) { return a+b; } Il y a une chose que je ne comprends pas: Où pourrais-je trouver ce que signifie l'opérateur flèche ( ->) dans l'en-tête de fonction? Je suppose que de...

125
Pourquoi auto a = 1; compiler en C?

Le code: int main(void) { auto a=1; return 0; } est compilé sans erreur par le compilateur MS Visual Studio 2012, lorsque le fichier porte l'extension .c. J'ai toujours pensé que lorsque vous utilisez l'extension .c, la compilation doit être conforme à la syntaxe C et non à C ++. De plus, pour...

125
Lambda se retourne: est-ce légal?

Considérez ce programme assez inutile: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Fondamentalement, nous essayons...

114
Comment fonctionne lambda générique en C ++ 14?

Comment fonctionne lambda générique ( automot-clé comme type d'argument) dans la norme C ++ 14? Est-il basé sur des modèles C ++ où pour chaque type d'argument différent, le compilateur génère une nouvelle fonction avec le même corps mais des types remplacés (polymorphisme à la compilation) ou...

113
Existe-t-il une inférence de type automatique en Java?

Existe-t-il un autotype de variable en Java comme vous l'avez en C ++? Un exemple: for ( auto var : object_array) std::cout << var << std::endl; for( auto var : object_array) var.do_something_that_only_this_particular_obj_can_do(); Je sais qu'il existe une boucle for améliorée en Java,...

88
Auto C ++ et vs auto

Lors de la création de variables locales, est-il correct d'utiliser (const) auto&ou auto? par exemple: SomeClass object; const auto result = object.SomeMethod(); ou const auto& result = object.SomeMethod(); Où SomeMethod () renvoie une valeur non primitive - peut-être un autre type défini...

16
std :: pair <auto, auto> type de retour

Je jouais avec autoen std::pair. Dans le code ci-dessous, la fonction fest censée retourner un std::pairtype qui dépend d'un paramètre de modèle. Un exemple pratique: EXEMPLE 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S...