12template<
typename T,
typename U>
16 template<
typename T,
typename U>
19 template<
typename T,
typename U>
22 template<
typename T,
typename U>
25 template<
typename T,
typename U>
30 template<
typename... Types>
36 template<
typename T,
typename U>
40 template<
typename T,
typename U>
41 requires(!NeedsDecay<T, U> && HasCustomCommonType<T, U>)
44 template<
typename T,
typename U>
45 requires(!NeedsDecay<T, U> && !HasCustomCommonType<T, U> && ValueCommonType<T, U>)
46 struct CommonTypeHelper<T, U>
49 template<
typename T,
typename U>
50 requires(!NeedsDecay<T, U> && !HasCustomCommonType<T, U> && !ValueCommonType<T, U> && ReferenceCommonType<T, U>)
52 :
TypeConstant<meta::Decay<decltype(false ? util::declval<meta::RemoveReference<T> const&>()
53 : util::declval<meta::RemoveReference<U> const&>())>> {};
55 template<
typename T,
typename U,
typename W,
typename... Rest>
60template<
typename... Types>
64template<
typename T,
typename U,
template<
typename>
typename TQual,
template<
typename>
typename UQual>
77 template<
typename T,
typename U,
typename R>
80 template<
typename T,
typename U,
typename R>
83 template<
typename T,
typename U,
typename R>
86 template<
typename T,
typename U,
typename R>
89 template<
typename T,
typename U,
typename R>
92 template<
typename T,
typename U,
typename R>
95 template<
typename T,
typename U,
typename R>
98 template<
typename T,
typename U,
typename R>
101 template<
typename T,
typename U,
typename R>
104 template<
typename T,
typename U,
typename R>
107 template<
typename T,
typename U,
typename R>
110 template<
typename T,
typename U,
typename R>
113 template<
typename T,
typename U,
typename R>
116 template<
typename T,
typename U>
119 template<concepts::LValueReference T, concepts::LValueReference U>
126 struct SimpleCommonReference<T, U>
133 template<concepts::RValueReference T, concepts::RValueReference U>
134 requires(
requires {
typename SimpleCommonReference<T&, U&>::Type; } &&
135 concepts::ImplicitlyConvertibleTo<T, typename SimpleCommonReference<T&, U&>::Type> &&
136 concepts::ImplicitlyConvertibleTo<U, typename SimpleCommonReference<T&, U&>::Type>)
137 struct SimpleCommonReference<T, U> : TypeConstant<typename SimpleCommonReference<T&, U&>::Type> {};
139 template<concepts::LValueReference T, concepts::RValueReference U>
142 } && concepts::ImplicitlyConvertibleTo<
U &&,
145 : TypeConstant<typename SimpleCommonReference<T, meta::RemoveReference<U> const&>::Type> {};
147 template<concepts::RValueReference T, concepts::LValueReference U>
150 template<
typename T,
typename U>
153 template<
typename T,
typename U>
159 template<
typename T,
typename U>
162 template<
typename T,
typename U>
165 template<
typename... Types>
171 template<
typename T,
typename U>
175 template<
typename T,
typename U>
176 requires(!HasSimpleCommonReference<T, U> && HasCustomCommonReference<T, U>)
177 struct CommonReferenceHelper<T, U>
178 :
TypeConstant<typename CustomCommonReference<T, U, ProjectQualifiers<T>::template Type,
179 ProjectQualifiers<U>::template Type>::Type> {};
181 template<
typename T,
typename U>
182 requires(!HasSimpleCommonReference<T, U> && !HasCustomCommonReference<T, U> && HasValueCommonReference<T, U>)
183 struct CommonReferenceHelper<T, U> : TypeConstant<decltype(false ? __get_value<T>() : __get_value<U>())> {};
185 template<
typename T,
typename U>
186 requires(!HasSimpleCommonReference<T, U> && !HasCustomCommonReference<T, U> && !HasValueCommonReference<T, U> &&
187 HasCommonTypeCommonReference<T, U>)
190 template<
typename T,
typename U,
typename W,
typename... Rest>
196template<
typename... Types>
202template<
typename T,
typename U>
207template<
typename T,
typename U>
Definition operations.h:99
Definition any_storable.h:9
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8