tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
variant_alternative.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_VARIANT_VARIANT_ALTERNATIVE_HPP
4#define TETL_VARIANT_VARIANT_ALTERNATIVE_HPP
5
6#include <etl/_meta/at.hpp>
11
12namespace etl {
13
14template <size_t Idx, typename... Ts>
15struct variant_alternative<Idx, variant<Ts...>> {
16 static_assert(Idx < sizeof...(Ts));
17 using type = meta::at_t<Idx, meta::list<Ts...>>;
18};
19
20template <size_t I, typename T>
22
23template <size_t Idx, typename T>
24struct variant_alternative<Idx, T const> {
25 using type = add_const_t<variant_alternative_t<Idx, T>>;
26};
27
28template <size_t Idx, typename T>
29struct variant_alternative<Idx, T volatile> {
30 using type = add_volatile_t<variant_alternative_t<Idx, T>>;
31};
32
33template <size_t Idx, typename T>
34struct variant_alternative<Idx, T const volatile> {
35 using type = add_cv_t<variant_alternative_t<Idx, T>>;
36};
37
38} // namespace etl
39
40#endif // TETL_VARIANT_VARIANT_ALTERNATIVE_HPP
typename at< I, List >::type at_t
Definition at.hpp:25
Definition adjacent_find.hpp:8
typename variant_alternative< I, T >::type variant_alternative_t
Definition variant_alternative.hpp:21
Definition list.hpp:10
add_const_t< variant_alternative_t< Idx, T > > type
Definition variant_alternative.hpp:25
add_cv_t< variant_alternative_t< Idx, T > > type
Definition variant_alternative.hpp:35
add_volatile_t< variant_alternative_t< Idx, T > > type
Definition variant_alternative.hpp:30
meta::at_t< Idx, meta::list< Ts... > > type
Definition variant_alternative.hpp:17
Provides compile-time indexed access to the types of the alternatives of the possibly cv-qualified va...
Definition variant_fwd.hpp:27
Definition variant.hpp:98