NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/nostd/detail/variant_alternative.h
Go to the documentation of this file.
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3 
4 #pragma once
5 
6 #include <type_traits>
7 
8 #include "opentelemetry/nostd/detail/type_pack_element.h"
9 #include "opentelemetry/nostd/detail/variant_fwd.h"
10 #include "opentelemetry/version.h"
11 
13 namespace nostd
14 {
15 template <std::size_t I, typename T>
17 
18 template <std::size_t I, typename T>
20 
21 template <std::size_t I, typename T>
22 struct variant_alternative<I, const T> : std::add_const<variant_alternative_t<I, T>>
23 {};
24 
25 template <std::size_t I, typename T>
26 struct variant_alternative<I, volatile T> : std::add_volatile<variant_alternative_t<I, T>>
27 {};
28 
29 template <std::size_t I, typename T>
30 struct variant_alternative<I, const volatile T> : std::add_cv<variant_alternative_t<I, T>>
31 {};
32 
33 template <std::size_t I, typename... Ts>
34 struct variant_alternative<I, variant<Ts...>>
35 {
36  static_assert(I < sizeof...(Ts), "index out of bounds in `std::variant_alternative<>`");
37  using type = detail::type_pack_element_t<I, Ts...>;
38 };
39 } // namespace nostd
nostd
Definition: includes/opentelemetry/nostd/function_ref.h:14
absl::OTABSL_OPTION_NAMESPACE_NAME::variant
Definition: includes/opentelemetry/nostd/variant.h:61
nostd::variant_alternative< I, variant< Ts... > >::type
detail::type_pack_element_t< I, Ts... > type
Definition: includes/opentelemetry/nostd/detail/variant_alternative.h:37
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
nostd::variant_alternative
Definition: includes/opentelemetry/nostd/detail/variant_alternative.h:16
nostd::variant_alternative_t
typename variant_alternative< I, T >::type variant_alternative_t
Definition: includes/opentelemetry/nostd/detail/variant_alternative.h:19
nostd::detail::type_pack_element_t
typename type_pack_element< I, Ts... >::type type_pack_element_t
Definition: includes/opentelemetry/nostd/detail/type_pack_element.h:50