auto

Ein Dialog unter Zahlen:
i: Be rational!
pi: Get real!
— N.N.

Das vorher entbehrliche, aber reservierte Schlüsselwort auto erhält seit C++11 neue Bedeutung. Der Typ von Variablen ist aus dem zugewiesenen Wert herleitbar. Lange Namen wie von Container-Iteratortypen (siehe range-based for) und Funktoren müssen nicht mehr ausgeschrieben werden. Einige Programmierer empfehlen diesen Stil als AAA (almost always auto).

  auto i  = std::complex<double>{0., 1.};
  auto pi = 3.2;  // double; Wert vorgeschlagen von Indiana Pi Bill 1897

Lambda-Ausdrücke besitzen einen vom Compiler erzeugten Typ, der nur mit auto benannt werden kann. Generische Lambda-Ausdrücke (ab C++14) enthalten auto-Parameter. In C++20 werden Funktionen mit auto-Parametern zu Schablonen, ohne dass template <…> davor geschrieben werden muss:

#include <iostream>
 
void f(auto x) { std::cout << x; }
 
int main()
{
   f(42);
   f(" is the answer"); 
}