Outils pour utilisateurs

Outils du site


lang:cpp:auto

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lang:cpp:auto [2019/11/08 11:34] – Création rootlang:cpp:auto [2025/02/05 10:02] (Version actuelle) – [Lambda] : déplacement dans une page dédiée root
Ligne 1: Ligne 1:
 +====Auto====
 +
 ===Présentation=== ===Présentation===
  
Ligne 14: Ligne 16:
 ===Différences=== ===Différences===
 Mais il y a des différences. ''auto'' ne conserve pas ''const'', ''volatile'' ni ''&'' ou ''&&''. ''decltype'' garde tout. Mais il y a des différences. ''auto'' ne conserve pas ''const'', ''volatile'' ni ''&'' ou ''&&''. ''decltype'' garde tout.
 +
 +Il est possible de faire ''decltype(auto)'' pour tout conserver et déduire automatiquement le type de retour.
  
 ===Retour d'une fonction=== ===Retour d'une fonction===
Ligne 33: Ligne 37:
 {return 0;} {return 0;}
 </code> </code>
 +
 +[[http://thbecker.net/articles/auto_and_decltype/section_01.html|C++ auto and decltype Explained]] {{ :lang:cpp:auto:auto_and_decltype.zip |Archive du 05/2013 le 11/11/2019}}
 +
 +===Conteneur multi-types (''std::map'', ''std::tuple'', ...)===
 +
 +[[lang:cpp:boucles#conteneur_multi-types_stdmap_stdtuple|Voir les boucles]]
 +
 +===Connaître le type à la compilation===
 +Cela se fait en lisant le message d'erreur à la compilation.
 +
 +<code>
 +template<class Type> struct S;
 +
 +int main() {
 +   auto x = ...;
 +   S<decltype(x)>();
 +}
 +</code>
 +
 +Message d'erreur possible (le type est le template de la structure S) :
 +  utilisation du type non défini 'S<const std::list<unsigned char> &>'
 +
 +[[https://stackoverflow.com/questions/24441505/retrieving-the-type-of-auto-in-c11-without-executing-the-program|Retrieving the type of auto in C++11 without executing the program]] {{ :lang:cpp:variable:c_-_retrieving_the_type_of_auto_in_c_11_without_executing_the_program_-_stack_overflow_2019-12-18_22_53_20_.html |Archive du 26/06/2014 le 18/12/2019}}
  
  
lang/cpp/auto.1573209290.txt.gz · Dernière modification : 2019/11/08 11:34 de root