Namespaces
Variants

std::basic_common_reference<std::reference_wrapper>

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support de type (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (obsolète en C++20)
 
Objets fonctions
Invocation de fonction
(C++17)(C++23)
Objet fonction identité
(C++20)
Wrappers d'opérateurs transparents
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Anciens binders et adaptateurs
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)  
(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à C++20*)
(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)

(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à C++20*)
 
 
Défini dans l'en-tête <functional>
template< class R, class T,
          template<class> RQual, template<class> TQual >
    requires (/*ref-wrap-common-reference-exists-with*/<R, T, RQual<R>, TQual<T>> &&
              !/*ref-wrap-common-reference-exists-with*/<T, R, TQual<T>, RQual<R>>)
struct basic_common_reference<R, T, RQual, TQual>;
(1) (depuis C++23)
template< class T, class R,
          template<class> TQual, template<class> RQual >
    requires (/*ref-wrap-common-reference-exists-with*/<R, T, RQual<R>, TQual<T>> &&
              !/*ref-wrap-common-reference-exists-with*/<T, R, TQual<T>, RQual<R>>)
struct basic_common_reference<T, R, TQual, RQual>;
(2) (depuis C++23)
Concepts auxiliaires
template< class R, class T, class RQ, class TQ >
concept /*ref-wrap-common-reference-exists-with*/ =
    /*is-ref-wrapper*/<R> &&
    requires { typename std::common_reference_t<typename R::type&, TQ>; } &&
    std::convertible<RQ, std::common_reference_t<typename R::type&, TQ>>;
(3) (exposition uniquement*)

Le type de référence commune d'un reference_wrapper (dénoté par R) et d'un type T, auxquels sont appliqués respectivement les qualificateurs cv et de référence (dénotés par RQ et TQ), est équivalent à un type de référence commune du type sous-jacent de R auquel est appliquée une référence lvalue et du TQ.

Le type de référence commune n'est défini que si R est le seul reference_wrapper, le type sous-jacent de R auquel est appliquée une référence lvalue et le TQ ont un type de référence commune vers lequel RQ doit pouvoir être converti.

La constante d'exposition uniquement /*is-ref-wrapper*/<R> est true si et seulement si R est une spécialisation de std::reference_wrapper.

Types membres

Type de membre Définition
type std:: common_reference_t < typename R :: type & , TQual < T >> ( 1,2 )

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_common_reference_wrapper 202302L (C++23) Faire de std::common_reference_t de std::reference_wrapper un type référence

Exemple

#include <concepts>
#include <functional>
static_assert(std::same_as<std::common_reference_t<int&,
                                                   std::reference_wrapper<int>>,
                                                   int&>);
static_assert(std::same_as<std::common_reference_t<std::reference_wrapper<int>&,
                                                   int&>,
                                                   int&>);
static_assert(std::same_as<std::common_reference_t<int&,
                                                   const std::reference_wrapper<int>&>,
                                                   int&>);
int main() {}

Voir aussi

détermine le type de référence commun d'un groupe de types
(modèle de classe)