tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
tuple_element.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_TUPLE_TUPLE_ELEMENT_HPP
5#define TETL_TUPLE_TUPLE_ELEMENT_HPP
6
7#include <etl/_cstddef/size_t.hpp>
8#include <etl/_type_traits/add_const.hpp>
9#include <etl/_type_traits/add_cv.hpp>
10#include <etl/_type_traits/add_volatile.hpp>
11
12namespace etl {
13
14template <typename... Ts>
15struct tuple;
16
17template <size_t I, typename T>
18struct tuple_element;
19
20template <size_t I, typename T>
21using tuple_element_t = typename tuple_element<I, T>::type;
22
23template <size_t I, typename T>
24struct tuple_element<I, T const> {
25 using type = add_const_t<typename tuple_element<I, T>::type>;
26};
27
28template <size_t I, typename T>
29struct tuple_element<I, T volatile> {
30 using type = add_volatile_t<typename tuple_element<I, T>::type>;
31};
32
33template <size_t I, typename T>
34struct tuple_element<I, T const volatile> {
35 using type = add_cv_t<typename tuple_element<I, T>::type>;
36};
37
38} // namespace etl
39
40#endif // TETL_TUPLE_TUPLE_ELEMENT_HPP
Definition adjacent_find.hpp:9
Definition tuple.hpp:114