tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
variant_size.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2// SPDX-FileCopyrightText: Copyright (C) 2021 Tobias Hienzsch
3
4#ifndef TETL_VARIANT_VARIANT_SIZE_HPP
5#define TETL_VARIANT_VARIANT_SIZE_HPP
6
7#include <etl/_cstddef/size_t.hpp>
8#include <etl/_type_traits/integral_constant.hpp>
9#include <etl/_variant/variant_fwd.hpp>
10
11namespace etl {
12
13template <typename... Ts>
14struct variant_size<variant<Ts...>> : integral_constant<etl::size_t, sizeof...(Ts)> { };
15
16template <typename T>
17struct variant_size<T const> : variant_size<T>::type { };
18
19template <typename T>
20struct variant_size<T volatile> : variant_size<T>::type { };
21
22template <typename T>
23struct variant_size<T const volatile> : variant_size<T>::type { };
24
25template <typename T>
26inline constexpr auto variant_size_v = variant_size<T>::value;
27
28} // namespace etl
29
30#endif // TETL_VARIANT_VARIANT_SIZE_HPP
Definition adjacent_find.hpp:9
constexpr auto variant_size_v
Definition variant_size.hpp:26
Definition integral_constant.hpp:10
Definition variant.hpp:99