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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow