Suche…
Einführung
Das Schlüsselwort decltype
kann verwendet werden, um den Typ einer Variablen, Funktion oder eines Ausdrucks decltype
.
Basisbeispiel
Dieses Beispiel zeigt nur, wie dieses Schlüsselwort verwendet werden kann.
int a = 10;
// Assume that type of variable 'a' is not known here, or it may
// be changed by programmer (from int to long long, for example).
// Hence we declare another variable, 'b' of the same type using
// decltype keyword.
decltype(a) b; // 'decltype(a)' evaluates to 'int'
Wenn sich zum Beispiel jemand ändert, geben Sie 'a' an:
float a=99.0f;
Dann wird der Variablentyp b
jetzt automatisch float
.
Ein anderes Beispiel
Nehmen wir an, wir haben Vektor:
std::vector<int> intVector;
Und wir wollen einen Iterator für diesen Vektor deklarieren. Eine naheliegende Idee ist die Verwendung von auto
. Es kann jedoch erforderlich sein, nur eine Iterator-Variable zu deklarieren (und nichts zuzuweisen). Wir würden machen:
vector<int>::iterator iter;
Mit decltype
es jedoch einfacher und weniger fehleranfällig (wenn sich der Typ von intVector
ändert).
decltype(intVector)::iterator iter;
Alternative:
decltype(intVector.begin()) iter;
Im zweiten Beispiel wird der Rückgabewert von begin
verwendet, um den tatsächlichen Typ zu ermitteln, nämlich vector<int>::iterator
.
Wenn wir einen const_iterator brauchen, brauchen wir nur cbegin
:
decltype(intVector.cbegin()) iter; // vector<int>::const_iterator