Typ-Bezeichner decltype (C++0x)

Aus RAD Studio (Deutsch)
Wechseln zu: Navigation, Suche

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

Siehe auch

In anderen Sprachen