Afficher : Delphi
C++
Préférences d'affichage
Spécificateur de type decltype (C++0x)
De RAD Studio XE2
Remonter à Fonctionnalités C++0x - Index
Le standard C++0x inclut l'opérateur et le mot clé decltype, qui représentent le type d'une expression. Cette fonctionnalité fait partie des fonctionnalités C++0x ajoutées à C++Builder 2009.
Syntaxe
Voici le format de l'opérateur decltype :
decltype ( expression )
Voici les règles d'évaluation de decltype(e) :
- Si e représente une expression d'identificateur ou l'accès à un membre de classe, decltype(e) est le type de l'objet désigné par e. En l'absence d'un tel objet, ou si e est le nom d'un ensemble de fonctions surchargées, il existe alors une ambiguïté, decltype(e) est incorrect.
- Sinon, si e est un appel de fonction ou invoque un opérateur surchargé, decltype(e) est le type renvoyé par la fonction.
- Sinon, si e est un lvalue, decltype(e) est une référence à T (T&) où T est le type de e.
- Si aucun des autres cas s'applique, decltype(e) est le type de e.
Exemples
Voir le contenu incorporé des exemples suivants.
const char *namePtr, nameChar;
decltype(namePtr); // le type est const char*
decltype(nameChar); // le type est const char
int& F(void);
decltype(F()); // le type est int&
struct; D {double value; }
const D* d = new D();
decltype(d->value); // le type est double
decltype((d->value)); // le type est const double&
double GetValue(int one);
long int GetValue(double d);
decltype(GetValue); // mal formé -- ambigu