blob: d6b5656e5dbfc97e1b095899bcd82b0d91313000 [file] [log] [blame]
// PR c++/97246
// { dg-do compile { target c++20 } }
template <int... Is, typename T>
T arg_T(decltype(Is)..., T, ...);
template <int I, int... Is>
inline constexpr auto get =
[]<typename... T>(decltype(Is)..., T... v, ...) {
static_assert( sizeof...(T) == sizeof...(v) );
if constexpr ( sizeof...(T) == 1 )
return (v,...);
else {
using V = decltype(arg_T<__integer_pack(I)...>(v...));
return get<I,__integer_pack(I)...>.template operator()<V>(v...);
}
};
static_assert( get<0>('\0', short{1}, 2, long{3}) == 0 );