Maison > développement back-end > C++ > Pourquoi `decltype((...))` renvoie-t-il une référence alors que `decltype(...)` ne le fait pas ?

Pourquoi `decltype((...))` renvoie-t-il une référence alors que `decltype(...)` ne le fait pas ?

Mary-Kate Olsen
Libérer: 2024-11-02 04:31:30
original
1123 Les gens l'ont consulté

 Why Does `decltype((...))` Return a Reference While `decltype(...)` Doesn't?

Comprendre la signification des parenthèses dans decltype((...))

L'utilisation de doubles parenthèses dans decltype((... )) a un impact subtil mais important sur le type déduit par l'opérateur decltype, comme en témoigne l'exemple du C 17 Function Definition Concurrency (FCD).

Lorsqu'il est appliqué à un identifiant sans parenthèses (expression id) ou à une expression d'accès de membre de classe, decltype renvoie le type de l'entité référencée. Cependant, lorsque l'expression est une lvalue (une variable ou une expression faisant référence à un emplacement mémoire), decltype préfixe une référence supplémentaire (&) avant le type de l'entité.

Dans l'exemple FCD :

  • decltype(a->x) fait référence à une variable membre (double x) d'une instance de classe (*a) et renvoie ainsi le type de base du membre : double.
  • decltype((a->x)) enveloppe la même expression d'accès aux membres entre parenthèses, la traitant comme une lvalue. Par conséquent, decltype renvoie le type de la lvalue, qui est une référence au type double : const double&.

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!

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