"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi `std::optional` manque-t-il de spécialisations de type de référence ?

Pourquoi `std::optional` manque-t-il de spécialisations de type de référence ?

Publié le 2024-11-08
Parcourir:665

Why Does `std::optional` Lack Reference Type Specializations?

Question : Explorer l'absence de spécialisations de type de référence dans std::optional

En standard C , std::optional fournit un conteneur pour détenir une valeur ou indiquer son absence. Cependant, contrairement à son homologue de Boost, std::optional manque de spécialisations pour les types de référence, laissant les utilisateurs avec une question : pourquoi ? Cet article examine les raisons de cette décision de conception et explore les options alternatives disponibles dans la bibliothèque standard pour gérer les références aux valeurs facultatives.

Réponse : répondre aux préoccupations et aux perspectives d'avenir

Lors de la proposition initiale (n3406) de valeurs facultatives, des préoccupations ont été soulevées par les membres du comité concernant les références facultatives. Par la suite, dans le n3527, les auteurs ont proposé de séparer les références facultatives dans une proposition auxiliaire pour améliorer les chances d'adoption des valeurs facultatives.

Bien que les références facultatives n'aient pas été incluses dans C 14 en raison d'autres facteurs, elles n'ont pas été rejetées par le comité. Cela laisse ouverte la possibilité d'incorporer des références facultatives dans une future norme C si une proposition est soumise.

Alternatives pour référencer les valeurs facultatives

Malgré l'absence de std : spécialisation facultative pour les types de référence, la bibliothèque standard fournit une alternative pour référencer les valeurs facultatives :

  • std::reference_wrapper<:optional>>: Cela vous permet pour créer une référence à une valeur facultative, en garantissant que les modifications apportées à la valeur facultative seront reflétées dans la référence. Cependant, il est important de noter que la valeur facultative reste immuable si la référence est une référence constante (c'est-à-dire initialisée avec std::cref).

En conclusion, le manque de spécialisations de type référence dans std::facultatif découle de préoccupations lors du processus de proposition. Cependant, le comité reste ouvert à l’idée de références facultatives à l’avenir. De plus, la bibliothèque standard fournit std::reference_wrapper<:optional>> comme alternative pour référencer des valeurs facultatives entre-temps.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3