Iros
 
Loading...
Searching...
No Matches
trivial.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/meta/language.h"
8
9namespace di::concepts {
10template<typename T>
11concept Trivial = __is_trivial(T);
12
13template<typename T, typename U>
14concept TriviallyAssignableFrom = __is_trivially_assignable(T, U);
15
16template<typename T, typename... Args>
17concept TriviallyConstructibleFrom = __is_trivially_constructible(T, Args...);
18
19template<typename T>
21
22template<typename T>
24
25template<typename T>
26concept TriviallyCopyable = __is_trivially_copyable(T);
27
28template<typename T>
30
31template<typename T>
33
34template<typename T>
36
37#ifdef DI_CLANG
38template<typename T>
39concept TriviallyDestructible = __is_trivially_destructible(T);
40#else
41template<typename T>
42concept TriviallyDestructible = Destructible<T> && __has_trivial_destructor(T);
43#endif
44
45namespace detail {
47 template<typename T>
48 constexpr auto operator()(InPlaceType<T>) const -> bool {
51 } else {
53 }
54 }
55 };
56}
57
59
60template<typename T>
62
70template<typename T>
75}
Definition language.h:212
Definition operations.h:57
An implicit life time type is one for which the object's lifetime can be started without an explicit ...
Definition trivial.h:71
Definition language.h:110
Definition language.h:367
Definition tag_invoke.h:45
Definition trivial.h:11
Definition trivial.h:26
Definition trivial.h:61
Definition impl.h:7
Definition any_storable.h:9
constexpr auto trivially_relocatable
Definition trivial.h:58
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto in_place_type
Definition in_place_type.h:12
constexpr auto operator()(InPlaceType< T >) const -> bool
Definition trivial.h:48
Definition in_place_type.h:5