tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
placeholder.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_FUNCTIONAL_PLACEHOLDER_HPP
5#define TETL_FUNCTIONAL_PLACEHOLDER_HPP
6
7#include <etl/_type_traits/integral_constant.hpp>
8
9namespace etl {
10
11template <typename T>
12struct is_placeholder : integral_constant<int, 0> { };
13
14namespace detail {
15template <int N>
16struct placeholder_type {
17 static_assert(N > 0, "invalid placeholder index");
18};
19
20} // namespace detail
21
22template <int N>
23struct is_placeholder<detail::placeholder_type<N>> : integral_constant<int, N> { };
24
25template <typename T>
26struct is_placeholder<T const> : is_placeholder<T>::type { };
27
28template <typename T>
29struct is_placeholder<T volatile> : is_placeholder<T>::type { };
30
31template <typename T>
32struct is_placeholder<T const volatile> : is_placeholder<T>::type { };
33
34template <typename T>
35inline constexpr int is_placeholder_v = is_placeholder<T>::value;
36
37namespace placeholders {
38inline constexpr auto _1 = detail::placeholder_type<1>{};
39inline constexpr auto _2 = detail::placeholder_type<2>{};
40inline constexpr auto _3 = detail::placeholder_type<3>{};
41inline constexpr auto _4 = detail::placeholder_type<4>{};
42inline constexpr auto _5 = detail::placeholder_type<5>{};
43inline constexpr auto _6 = detail::placeholder_type<6>{};
44inline constexpr auto _7 = detail::placeholder_type<7>{};
45inline constexpr auto _8 = detail::placeholder_type<8>{};
46inline constexpr auto _9 = detail::placeholder_type<9>{};
47inline constexpr auto _10 = detail::placeholder_type<10>{};
48inline constexpr auto _11 = detail::placeholder_type<11>{};
49inline constexpr auto _12 = detail::placeholder_type<12>{};
50inline constexpr auto _13 = detail::placeholder_type<13>{};
51inline constexpr auto _14 = detail::placeholder_type<14>{};
52inline constexpr auto _15 = detail::placeholder_type<15>{};
53inline constexpr auto _16 = detail::placeholder_type<16>{};
54inline constexpr auto _17 = detail::placeholder_type<17>{};
55inline constexpr auto _18 = detail::placeholder_type<18>{};
56inline constexpr auto _19 = detail::placeholder_type<19>{};
57inline constexpr auto _20 = detail::placeholder_type<20>{};
58inline constexpr auto _21 = detail::placeholder_type<21>{};
59inline constexpr auto _22 = detail::placeholder_type<22>{};
60inline constexpr auto _23 = detail::placeholder_type<23>{};
61inline constexpr auto _24 = detail::placeholder_type<24>{};
62inline constexpr auto _25 = detail::placeholder_type<25>{};
63inline constexpr auto _26 = detail::placeholder_type<26>{};
64inline constexpr auto _27 = detail::placeholder_type<27>{};
65inline constexpr auto _28 = detail::placeholder_type<28>{};
66inline constexpr auto _29 = detail::placeholder_type<29>{};
67inline constexpr auto _30 = detail::placeholder_type<30>{};
68inline constexpr auto _31 = detail::placeholder_type<31>{};
69inline constexpr auto _32 = detail::placeholder_type<32>{};
70} // namespace placeholders
71
72} // namespace etl
73
74#endif // TETL_FUNCTIONAL_PLACEHOLDER_HPP
Definition placeholder.hpp:37
constexpr auto _9
Definition placeholder.hpp:46
constexpr auto _14
Definition placeholder.hpp:51
constexpr auto _7
Definition placeholder.hpp:44
constexpr auto _24
Definition placeholder.hpp:61
constexpr auto _1
Definition placeholder.hpp:38
constexpr auto _26
Definition placeholder.hpp:63
constexpr auto _31
Definition placeholder.hpp:68
constexpr auto _11
Definition placeholder.hpp:48
constexpr auto _29
Definition placeholder.hpp:66
constexpr auto _22
Definition placeholder.hpp:59
constexpr auto _8
Definition placeholder.hpp:45
constexpr auto _6
Definition placeholder.hpp:43
constexpr auto _10
Definition placeholder.hpp:47
constexpr auto _16
Definition placeholder.hpp:53
constexpr auto _15
Definition placeholder.hpp:52
constexpr auto _18
Definition placeholder.hpp:55
constexpr auto _27
Definition placeholder.hpp:64
constexpr auto _30
Definition placeholder.hpp:67
constexpr auto _25
Definition placeholder.hpp:62
constexpr auto _17
Definition placeholder.hpp:54
constexpr auto _20
Definition placeholder.hpp:57
constexpr auto _32
Definition placeholder.hpp:69
constexpr auto _3
Definition placeholder.hpp:40
constexpr auto _28
Definition placeholder.hpp:65
constexpr auto _2
Definition placeholder.hpp:39
constexpr auto _5
Definition placeholder.hpp:42
constexpr auto _19
Definition placeholder.hpp:56
constexpr auto _4
Definition placeholder.hpp:41
constexpr auto _23
Definition placeholder.hpp:60
constexpr auto _21
Definition placeholder.hpp:58
constexpr auto _12
Definition placeholder.hpp:49
constexpr auto _13
Definition placeholder.hpp:50
Definition adjacent_find.hpp:9
constexpr int is_placeholder_v
Definition placeholder.hpp:35
Definition integral_constant.hpp:10
Definition placeholder.hpp:12