En C 11, le mot-clé auto offre un moyen pratique de déduire automatiquement le type d'une variable en fonction de son initialiseur . Cependant, il y a certaines questions à considérer quant à savoir si auto sera résolu en une valeur ou une référence.
La règle est simple : elle dépend de la façon dont la variable est déclarée.
<code class="cpp">int i = 5; auto a1 = i; // value auto &a2 = i; // reference</code>
<code class="cpp">#include <typeinfo> #include <iostream> template< typename T > struct A { static void foo(){ std::cout << "value" << std::endl; } }; template< typename T > struct A< T&> { static void foo(){ std::cout << "reference" << std::endl; } }; float& bar() { static float t=5.5; return t; } int main() { int i = 5; int &r = i; auto a1 = i; auto a2 = r; auto a3 = bar(); A<decltype(i)>::foo(); // value A<decltype(r)>::foo(); // reference A<decltype(a1)>::foo(); // value A<decltype(a2)>::foo(); // value A<decltype(bar())>::foo(); // reference A<decltype(a3)>::foo(); // value }</code>
Sortie :
value reference value value reference value
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!