31#ifndef ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
32#define ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
34#if defined(ETL_USE_TYPE_TRAITS_BUILTINS)
35 #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
36 #define ETL_USING_BUILTIN_IS_ASSIGNABLE 1
39 #if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
40 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 1
43 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
44 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 1
47 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
48 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 1
51 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
52 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 1
55 #if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
56 #define ETL_USING_BUILTIN_UNDERLYING_TYPE 1
60#if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT)
61 #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
62 #define ETL_USING_BUILTIN_IS_ASSIGNABLE __has_builtin(__is_assignable)
65 #if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
66 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE __has_builtin(__is_constructible)
69 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
70 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE (__has_builtin(__has_trivial_constructor) || __has_builtin(__is_trivially_constructible))
73 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
74 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE (__has_builtin(__has_trivial_destructor) || __has_builtin(__is_trivially_destructible))
77 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
78 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE (__has_builtin(__has_trivial_copy) || __has_builtin(__is_trivially_copyable))
81 #if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
82 #define ETL_USING_BUILTIN_UNDERLYING_TYPE __has_builtin(__underlying_type)
87#if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
88 #define ETL_USING_BUILTIN_IS_ASSIGNABLE 0
91#if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
92 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 0
95#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
96 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 0
99#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
100 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 0
103#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
104 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 0
107#if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
108 #define ETL_USING_BUILTIN_UNDERLYING_TYPE 0
117 static ETL_CONSTANT
bool using_builtin_is_assignable = (ETL_USING_BUILTIN_IS_ASSIGNABLE == 1);
118 static ETL_CONSTANT
bool using_builtin_is_constructible = (ETL_USING_BUILTIN_IS_CONSTRUCTIBLE == 1);
119 static ETL_CONSTANT
bool using_builtin_is_trivially_constructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE == 1);
120 static ETL_CONSTANT
bool using_builtin_is_trivially_destructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE == 1);
121 static ETL_CONSTANT
bool using_builtin_is_trivially_copyable = (ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE == 1);
122 static ETL_CONSTANT
bool using_builtin_underlying_type = (ETL_USING_BUILTIN_UNDERLYING_TYPE == 1);
bitset_ext
Definition absolute.h:38