std::basic_common_reference<std::reference_wrapper>
| Definiert in der Header-Datei <functional> |
||
template< class R, class T, template<class> RQual, template<class> TQual > |
(1) | (seit C++23) |
| template< class T, class R, template<class> TQual, template<class> RQual > |
(2) | (seit C++23) |
| Hilfskonzepte |
||
| template< class R, class T, class RQ, class TQ > concept /*ref-wrap-common-reference-exists-with*/ = |
(3) | (nur Exposition*) |
Der gemeinsame Referenztyp eines reference_wrapper (bezeichnet als R) und eines Typs T, die entsprechend mit cv- und Referenzqualifizierern (bezeichnet als RQ bzw. TQ) angewendet werden, ist äquivalent zu einem gemeinsamen Referenztyp des zugrunde liegenden Typs von R, angewendet mit einem lvalue-Referenz- und dem TQ.
Der gemeinsame Referenztyp ist nur dann definiert, wenn R der einzige reference_wrapper ist, der zugrunde liegende Typ von R angewendet mit einem lvalue-Referenz- und dem TQ einen gemeinsamen Referenztyp haben, zu dem RQ konvertierbar sein muss.
Die expositions-only Konstante /*is-ref-wrapper*/<R> ist true genau dann, wenn R eine Spezialisierung von std::reference_wrapper ist.
Inhalt |
[bearbeiten] Member types
| Mitgliedertyp | Definition |
type
|
std::common_reference_t<typename R::type&, TQual<T>> (1,2) |
[bearbeiten] Notes
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_common_reference_wrapper |
202302L |
(C++23) | std::common_reference_t von std::reference_wrapper zu einem Referenztyp machen |
[bearbeiten] Example
#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() {}
[bearbeiten] See also
| ermittelt den gemeinsamen Referenztyp einer Gruppe von Typen (Klassenvorlage) |