You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The placeholder set of a type T, denoted PS(T), is defined as:
PS(T) = ∅ if T is a primitive type or a class or union type not resulting from a template instantiation.
PS(mp_arg<N>) = {mp_arg<N>}.
PS(C<Ts...>) = ∪{PS(Ts)...}, where C is a class template without non-type template parameters.
PS(T) = ∪{PS(Q), Q is a constituent type of T} otherwise.
(Note that not all types have a well-defined placeholder set.)
For T with well-defined PS, lambda<T> is a quoted metafunction such that lambda<T>::fn<U...> is the type resulting from replacing mp_arg<I> in the formal expression defining T with the I-th element of U..., 0 ≤ I < sizeof...(U).
Implement
lambda
described as follows:The placeholder set of a type
T
, denoted PS(T
), is defined as:T
) = ∅ ifT
is a primitive type or a class or union type not resulting from a template instantiation.mp_arg<N>
) = {mp_arg<N>
}.C<Ts...>
) = ∪{PS(Ts
)...}, whereC
is a class template without non-type template parameters.T
) = ∪{PS(Q
),Q
is a constituent type ofT
} otherwise.(Note that not all types have a well-defined placeholder set.)
For
T
with well-defined PS,lambda<T>
is a quoted metafunction such thatlambda<T>::fn<U...>
is the type resulting from replacingmp_arg<I>
in the formal expression definingT
with theI
-th element ofU...
, 0 ≤I
<sizeof...(U)
.The following is an incomplete toy prototype showing how
lambda
could be implemented (https://compiler-explorer.com/z/r5Krbsnxj):The text was updated successfully, but these errors were encountered: