std::basic_common_reference<tuple-like> - cppreference.com

From cppreference.com

template<tuple-likeTTuple,tuple-likeUTuple,template<class>classTQual,template<class>classUQual>requires/* see below */structbasic_common_reference<TTuple,UTuple,TQual,UQual>;(since C++23)The common reference type of two

tuple-like

types is a

std::tuple

consists of the common reference types of all corresponding element type pairs of both types, where the cv and reference qualifiers on the tuple-like types are applied to their element types.

Given

TTypes as the pack formed by the sequence of std::tuple_element_t<i,TTuple> for every integer i in [0, std::tuple_size_v<TTuple>), and

UTypes as the pack formed by the sequence of std::tuple_element_t<i,UTuple> for every integer i in [0, std::tuple_size_v<UTuple>),

the following constraints need to be satisfied:

TTuple or UTuple is a

std::tuple

specialization.

std::is_same_v<TTuple,std::decay_t<TTuple>> is true.

std::is_same_v<UTuple,std::decay_t<UTuple>> is true.

std::tuple_size_v<TTuple> equals std::tuple_size_v<UTuple> (TTuple and UTuple have the same number of elements).

std::tuple<std::common_reference_t<TQual<TTypes>...,UQual<UTypes>>...> denotes a type.

Member types

Member type Definition typestd::tuple<std::common_reference_t<TQual<TTypes>...,UQual<UTypes>>...>Example

See also