Typ-Bezeichner decltype (C++0x)
Aus RAD Studio (Deutsch)
Der C++0x-Standard enthält das Schlüsselwort und den Operator decltype, der den Typ eines Ausdrucks repräsentiert. Dieses C++0x-Feature wurde zu C++Builder 2009 hinzugefügt.
Syntax
Das Format des decltype-Operators lautet:
decltype ( Ausdruck )
Regeln für die Auswertung von decltype(e):
- Wenn e ein Bezeichnerausdruck für den Zugriff auf einen Klassen-Member ist, dann ist decltype(e) der Typ des von e bezeichneten Elements. Wenn ein solches Element nicht vorhanden oder e der Name einer überladenen Funktionsmenge ist, so besteht eine Mehrdeutigkeit und decltype(e) ist ungültig.
- Wenn e ein Funktionsaufruf ist oder einen überladenen Operator aufruft, so ist decltype(e) der von der Funktion zurückgegebene Typ.
- Wenn e ein L-Wert ist, so ist decltype(e) eine Referenz auf T (T&), wobei T der Typ von e ist.
- Wenn keiner dieser Fälle zutrifft, ist decltype(e) der Typ von e.
Beispiele
Bitte beachten Sie die folgenden Beispiele:
const char *namePtr, nameChar;
decltype(namePtr); // Typ ist const char*
decltype(nameChar); // Typ ist const char
int& F(void);
decltype(F()); // Typ ist int&
struct; D {double value; }
const D* d = new D();
decltype(d->value); // Typ ist double
decltype((d->value)); // Typ ist const double&
double GetValue(int one);
long int GetValue(double d);
decltype(GetValue); // nicht wohlgeformt -- mehrdeutig