Blaze 3.9
Constructible.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_UTIL_CONSTRAINTS_CONSTRUCTIBLE_H_
36#define _BLAZE_UTIL_CONSTRAINTS_CONSTRUCTIBLE_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
44
45
46namespace blaze {
47
48//=================================================================================================
49//
50// MUST_BE_DEFAULT_CONSTRUCTIBLE_TYPE CONSTRAINT
51//
52//=================================================================================================
53
54//*************************************************************************************************
61#define BLAZE_CONSTRAINT_MUST_BE_DEFAULT_CONSTRUCTIBLE_TYPE(T) \
62 static_assert( ::blaze::IsDefaultConstructible_v<T>, "Non-default constructible type detected" )
63//*************************************************************************************************
64
65
66
67
68//=================================================================================================
69//
70// MUST_NOT_BE_DEFAULT_CONSTRUCTIBLE_TYPE CONSTRAINT
71//
72//=================================================================================================
73
74//*************************************************************************************************
81#define BLAZE_CONSTRAINT_MUST_NOT_BE_DEFAULT_CONSTRUCTIBLE_TYPE(T) \
82 static_assert( !::blaze::IsDefaultConstructible_v<T>, "Default constructible type detected" )
83//*************************************************************************************************
84
85
86
87
88//=================================================================================================
89//
90// MUST_BE_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE CONSTRAINT
91//
92//=================================================================================================
93
94//*************************************************************************************************
101#define BLAZE_CONSTRAINT_MUST_BE_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE(T) \
102 static_assert( ::blaze::IsNothrowDefaultConstructible_v<T>, "Non-noexcept default constructible type detected" )
103//*************************************************************************************************
104
105
106
107
108//=================================================================================================
109//
110// MUST_NOT_BE_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE CONSTRAINT
111//
112//=================================================================================================
113
114//*************************************************************************************************
121#define BLAZE_CONSTRAINT_MUST_NOT_BE_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE(T) \
122 static_assert( !::blaze::IsNothrowDefaultConstructible_v<T>, "Noexcept default constructible type detected" )
123//*************************************************************************************************
124
125
126
127
128//=================================================================================================
129//
130// MUST_BE_COPY_CONSTRUCTIBLE_TYPE CONSTRAINT
131//
132//=================================================================================================
133
134//*************************************************************************************************
141#define BLAZE_CONSTRAINT_MUST_BE_COPY_CONSTRUCTIBLE_TYPE(T) \
142 static_assert( ::blaze::IsCopyConstructible_v<T>, "Non-copy constructible type detected" )
143//*************************************************************************************************
144
145
146
147
148//=================================================================================================
149//
150// MUST_NOT_BE_COPY_CONSTRUCTIBLE_TYPE CONSTRAINT
151//
152//=================================================================================================
153
154//*************************************************************************************************
161#define BLAZE_CONSTRAINT_MUST_NOT_BE_COPY_CONSTRUCTIBLE_TYPE(T) \
162 static_assert( !::blaze::IsCopyConstructible_v<T>, "Copy constructible type detected" )
163//*************************************************************************************************
164
165
166
167
168//=================================================================================================
169//
170// MUST_BE_NOTHROW_COPY_CONSTRUCTIBLE_TYPE CONSTRAINT
171//
172//=================================================================================================
173
174//*************************************************************************************************
181#define BLAZE_CONSTRAINT_MUST_BE_NOTHROW_COPY_CONSTRUCTIBLE_TYPE(T) \
182 static_assert( ::blaze::IsNothrowCopyConstructible_v<T>, "Non-noexcept copy constructible type detected" )
183//*************************************************************************************************
184
185
186
187
188//=================================================================================================
189//
190// MUST_NOT_BE_NOTHROW_COPY_CONSTRUCTIBLE_TYPE CONSTRAINT
191//
192//=================================================================================================
193
194//*************************************************************************************************
201#define BLAZE_CONSTRAINT_MUST_NOT_BE_NOTHROW_COPY_CONSTRUCTIBLE_TYPE(T) \
202 static_assert( !::blaze::IsNothrowCopyConstructible_v<T>, "Noexcept copy constructible type detected" )
203//*************************************************************************************************
204
205
206
207
208//=================================================================================================
209//
210// MUST_BE_MOVE_CONSTRUCTIBLE_TYPE CONSTRAINT
211//
212//=================================================================================================
213
214//*************************************************************************************************
221#define BLAZE_CONSTRAINT_MUST_BE_MOVE_CONSTRUCTIBLE_TYPE(T) \
222 static_assert( ::blaze::IsMoveConstructible_v<T>, "Non-move constructible type detected" )
223//*************************************************************************************************
224
225
226
227
228//=================================================================================================
229//
230// MUST_NOT_BE_MOVE_CONSTRUCTIBLE_TYPE CONSTRAINT
231//
232//=================================================================================================
233
234//*************************************************************************************************
241#define BLAZE_CONSTRAINT_MUST_NOT_BE_MOVE_CONSTRUCTIBLE_TYPE(T) \
242 static_assert( !::blaze::IsMoveConstructible_v<T>, "Move constructible type detected" )
243//*************************************************************************************************
244
245
246
247
248//=================================================================================================
249//
250// MUST_BE_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE CONSTRAINT
251//
252//=================================================================================================
253
254//*************************************************************************************************
261#define BLAZE_CONSTRAINT_MUST_BE_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE(T) \
262 static_assert( ::blaze::IsNothrowMoveConstructible_v<T>, "Non-noexcept move constructible type detected" )
263//*************************************************************************************************
264
265
266
267
268//=================================================================================================
269//
270// MUST_NOT_BE_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE CONSTRAINT
271//
272//=================================================================================================
273
274//*************************************************************************************************
281#define BLAZE_CONSTRAINT_MUST_NOT_BE_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE(T) \
282 static_assert( !::blaze::IsNothrowMoveConstructible_v<T>, "Noexcept move constructible type detected" )
283//*************************************************************************************************
284
285} // namespace blaze
286
287#endif
Header file for the IsConstructible type trait.