-
Notifications
You must be signed in to change notification settings - Fork 0
/
synopsis.hpp
187 lines (165 loc) · 9.55 KB
/
synopsis.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
// Copyright (c) 2022 Papa Libasse Sow.
// https://github.com/Nandite/bazaar_traits
// Distributed under the MIT Software License (X11 license).
//
// SPDX-License-Identifier: MIT
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of
// the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#ifndef BAZAAR_SYNOPSIS_HPP
#define BAZAAR_SYNOPSIS_HPP
/*
namespace bazaar
{
//-------------------------------------------------------------------------------------------
// helper_traits.hpp
//-------------------------------------------------------------------------------------------
using nullptr_t;
using void_t;
template<typename Tp> struct identity;
template <bool, typename Tp = void> struct enable_if;
template<bool Condition, typename If, typename Else> struct conditional
template<typename Tp, typename Up> struct is_same;
//-------------------------------------------------------------------------------------------
// integral_constant.hpp
//-------------------------------------------------------------------------------------------
template<typename Tp, Tp v> struct integral_constant;
template<bool v> using bool_constant;
using true_type = bool_constant<true>;
using false_type = bool_constant<false>;
//-------------------------------------------------------------------------------------------
// arithmetic.hpp
//-------------------------------------------------------------------------------------------
template<std::size_t ... Sequence> struct static_max;
template<std::size_t ... Sequence> struct static_min;
//-------------------------------------------------------------------------------------------
// logical_operators.hpp
//-------------------------------------------------------------------------------------------
template<typename ... Bn> struct conjunction;
template<typename ... Bn> struct disjunction;
template<typename B> struct negation;
//-------------------------------------------------------------------------------------------
// bazaar_traits.hpp
//-------------------------------------------------------------------------------------------
// Array properties and transformations:
template<typename Tp> struct rank;
template<typename Tp, std::size_t N = 0> struct extent;
template<typename Tp> struct remove_extent;
template<typename Tp> struct remove_all_extents;
template<typename Tp> struct is_bounded_array;
template<typename Tp> struct is_unbounded_array;
// Reference transformations:
template<typename Tp> struct remove_reference;
template<typename Tp> struct add_lvalue_reference;
template<typename Tp> struct add_rvalue_reference;
// Const-volatile properties and transformations:
template<typename Tp> struct is_const;
template<typename Tp> struct is_volatile;
template <typename Tp> struct remove_const;
template <typename Tp> struct remove_volatile;
template<typename Tp> struct remove_cv;
template<typename Tp> struct add_const;
template<typename Tp> struct add_volatile;
template<typename Tp> struct add_cv;
// Primary classification traits:
template<typename Tp> struct is_void;
template<typename Tp> struct is_null_pointer;
template<typename Tp> struct is_integral;
template<typename Tp> struct is_floating_point;
template<typename Tp> struct is_signed_integer;
template<typename Tp> struct is_unsigned_integer;
template<typename Tp> struct is_arithmetic;
template<typename Tp> struct is_array;
template<typename Tp> struct is_pointer;
template<typename Tp> struct is_lvalue_reference;
template<typename Tp> struct is_rvalue_reference;
template<typename Tp> struct is_reference;
template<typename Tp> struct is_function;
template<typename Tp> struct is_member_pointer;
template<typename Tp> struct is_member_object_pointer;
template<typename Tp> struct is_member_function_pointer;
template<typename Tp> struct is_union;
template<typename Tp> struct is_class;
template<typename Tp> struct is_enum;
// Secondary classification traits:
template<typename Tp> struct is_fundamental;
template<typename Tp> struct is_scalar;
template<typename Tp> struct is_object;
template<typename Tp> struct is_compound;
// Pointer transformations:
template<typename Tp> struct remove_pointer;
template<typename Tp> struct add_pointer;
// Integral properties:
template<typename Tp> struct is_signed;
template<typename Tp> struct is_unsigned;
template<typename Tp> struct make_signed;
template<typename Tp> struct make_unsigned;
// Member introspection:
template<typename Tp, typename ... Args> struct is_constructible;
template<typename Tp> struct is_default_constructible;
template<typename Tp> struct is_copy_constructible;
template<typename Tp> struct is_move_constructible;
template<typename Tp, typename Up> struct is_assignable;
template<typename Tp> struct is_copy_assignable;
template<typename Tp> struct is_move_assignable;
template<typename Tp, typename Up> struct is_swappable_with;
template<typename Tp> struct is_swappable;
template<typename Tp> struct is_destructible;
template<typename Tp, typename ... Args> struct is_trivially_constructible;
template<typename Tp> struct is_trivially_default_constructible;
template<typename Tp> struct is_trivially_copy_constructible;
template<typename Tp> struct is_trivially_move_constructible;
template<typename Tp, typename Up> struct is_trivially_assignable;
template<typename Tp> struct is_trivially_copy_assignable;
template<typename Tp> struct is_trivially_move_assignable;
template<typename Tp> struct is_trivially_destructible;
template<typename Tp> struct is_trivially_copyable;
template<typename Tp> struct is_trivial;
template<typename Tp> struct is_standard_layout;
template<typename Tp> struct is_empty;
template<typename Tp> struct is_polymorphic;
template<typename Tp> struct is_abstract;
template<typename Tp> struct is_final;
template<typename Tp> struct is_aggregate;
template<typename Tp, typename ... Args> struct is_nothrow_constructible;
template<typename Tp> struct is_nothrow_default_constructible;
template<typename Tp> struct is_nothrow_copy_constructible;
template<typename Tp> struct is_nothrow_move_constructible;
template<typename Tp, typename Up> struct is_nothrow_assignable;
template<typename Tp> struct is_nothrow_copy_assignable;
template<typename Tp> struct is_nothrow_move_assignable;
template<typename Tp, typename Up> struct is_nothrow_swappable_with;
template<typename Tp> struct is_nothrow_swappable;
template<typename Tp> struct is_nothrow_destructible;
template<typename Tp> struct has_virtual_destructor;
template<typename Tp> struct has_unique_object_representations;
// Relationships between types:
template<typename Base, typename Derived> struct is_base_of;
template<typename From, typename To> struct is_convertible;
template<typename From, typename To> struct is_nothrow_convertible
// Alignment properties and transformations:
template<typename Tp> struct alignment_of;
template<typename Tp> struct decay;
template<typename Tp> struct remove_cvref;
template<typename ...> struct common_type
template<typename Tp> struct underlying_type;
// Todo : implement theses
template <class Fn, class... ArgTypes> struct is_invocable;
template <class R, class Fn, class... ArgTypes> struct is_invocable_r;
template <class Fn, class... ArgTypes> struct is_nothrow_invocable;
template <class R, class Fn, class... ArgTypes> struct is_nothrow_invocable_r;
template <class Fn, class... ArgTypes> struct invoke_result; // C++17
template <size_t Len, size_t Align = most_stringent_alignment_requirement> struct aligned_storage;
template <size_t Len, class... Types> struct aligned_union;
}*/
#endif //BAZAAR_SYNOPSIS_HPP