Maison > développement back-end > C++ > le corps du texte

Quel est l'impact des parenthèses dans `decltype((...))` ?

Linda Hamilton
Libérer: 2024-11-03 05:38:30
original
337 Les gens l'ont consulté

 What's the Impact of Parentheses in `decltype((...))`?

Que signifient les doubles parenthèses dans decltype((...)) ?

Le standard C définit le comportement du decltype(( ...)) syntaxe de la section 7.6.1.2/4 du FCD. Cette syntaxe permet aux programmeurs de déduire le type d'une expression, comme le démontre l'exemple suivant :

<code class="cpp">const int&&& foo();
int i;
struct A { double x; };
const A* a = new A();
decltype(foo()) x1 = i;     // type is const int&&&
decltype(i) x2;             // type is int
decltype(a->x) x3;          // type is double
decltype((a->x)) x4 = x3;   // type is const double&</code>
Copier après la connexion

La présence de parenthèses autour de l'expression dans decltype((a->x)) fait une différence significative dans le type déduit. Sans les parenthèses, le type est simplement double, indiquant le type de retour de l'accès membre (a->x).

Cependant, avec les parenthèses, l'expression devient une lvalue. Selon la norme, si e est une lvalue, decltype(e) est T&, où T est le type de e. Dans ce cas, T est double, et le type déduit est donc const double&.

Par conséquent, les parenthèses dans decltype((a->x)) forcent la déduction à traiter l'expression comme une lvalue, ce qui entraîne dans un type différent de celui si les parenthèses étaient omises.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal