6 #include "opentelemetry/nostd/utility.h"
7 #include "opentelemetry/version.h"
9 OPENTELEMETRY_BEGIN_NAMESPACE
14 template <std::size_t N
>
15 using size_constant
= std::integral_constant
<std::size_t, N
>;
17 template <std::size_t I
, typename T
>
18 struct indexed_type
: size_constant
<I
>
23 template <std::size_t I
, typename
... Ts
>
24 struct type_pack_element_impl
30 template <std::size_t... Is
>
31 struct set
<index_sequence
<Is
...>> : indexed_type
<Is
, Ts
>...
35 inline static std::enable_if
<true, T
> impl(indexed_type
<I
, T
>);
37 inline static std::enable_if
<false> impl(...);
40 using type
= decltype(impl(set
<index_sequence_for
<Ts
...>>{}));
43 template <std::size_t I
, typename
... Ts
>
44 using type_pack_element
= typename type_pack_element_impl
<I
, Ts
...>::type
;
46 template <std::size_t I
, typename
... Ts
>
47 using type_pack_element_t
= typename type_pack_element
<I
, Ts
...>::type
;
50 OPENTELEMETRY_END_NAMESPACE