dl
dl_concept.h
浏览该文件的文档.
1
12#pragma once
13
14#include "system/dl_platform.h"
15
16#include <type_traits>
17#include <concepts>
18
19namespace dl
20{
21
22template<typename T>
23concept PopFrontAble = requires(T x) { x.pop_front(); };
24
25template<typename T>
26concept IsUnsigned = std::is_unsigned<T>::value;
27
28template<typename T>
29concept IsSigned = std::is_signed<T>::value;
30
31template<typename T>
32concept IsInteger = std::is_integral<T>::value;
33
34template<typename T>
35concept IsReal = std::is_floating_point<T>::value;
36
37//标准布局
38template<typename T>
39concept IsStandardLayout = std::is_standard_layout<T>::value;
40
41//平凡类型,比is_standard_layout严格
42template<typename T>
43concept IsTrivial = std::is_trivial<T>::value;
44
45//标准布局 与 平凡类型 的组合
46template<typename T>
47concept IsPod = std::is_trivial_v<T> && std::is_standard_layout_v<T>;
48
49template<typename T>
50concept IsNotPod = !std::is_trivial_v<T> || !std::is_standard_layout_v<T>;
51
53template<typename T>
54concept IsCopyable = std::is_trivially_copyable<T>::value;
55
57template<typename T>
58concept IsBase = std::is_fundamental<T>::value;
59
61template<typename T>
62concept IsPointer = std::is_pointer<T>::value;
63
65template<typename T>
66concept IsEnum = std::is_enum<T>::value;
67
68}
是内置数据类型
平凡可复制 唯一可以使用std::memcpy和fstream::write/read的类型
是枚举类型
是指针类型
平台宏