19
19
20
20
namespace llvm {
21
21
22
-
23
22
// / Metafunction that determines whether the given type is either an
24
23
// / integral type or an enumeration type, including enum classes.
25
24
// /
@@ -40,8 +39,10 @@ template <typename T> class is_integral_or_enum {
40
39
};
41
40
42
41
// / If T is a pointer, just return it. If it is not, return T&.
43
- template <typename T, typename Enable = void >
44
- struct add_lvalue_reference_if_not_pointer { using type = T &; };
42
+ template <typename T, typename Enable = void >
43
+ struct add_lvalue_reference_if_not_pointer {
44
+ using type = T &;
45
+ };
45
46
46
47
template <typename T>
47
48
struct add_lvalue_reference_if_not_pointer <
@@ -51,8 +52,9 @@ struct add_lvalue_reference_if_not_pointer<
51
52
52
53
// / If T is a pointer to X, return a pointer to const X. If it is not,
53
54
// / return const T.
54
- template <typename T, typename Enable = void >
55
- struct add_const_past_pointer { using type = const T; };
55
+ template <typename T, typename Enable = void > struct add_const_past_pointer {
56
+ using type = const T;
57
+ };
56
58
57
59
template <typename T>
58
60
struct add_const_past_pointer <T, std::enable_if_t <std::is_pointer_v<T>>> {
@@ -69,29 +71,29 @@ struct const_pointer_or_const_ref<T, std::enable_if_t<std::is_pointer_v<T>>> {
69
71
};
70
72
71
73
namespace detail {
72
- template <class T >
73
- union trivial_helper {
74
- T t;
74
+ template <class T > union trivial_helper {
75
+ T t;
75
76
};
76
77
77
- } // end namespace detail
78
+ } // namespace detail
78
79
79
- template <typename T>
80
- struct is_copy_assignable {
81
- template <class F >
82
- static auto get (F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
83
- static std::false_type get (...);
84
- static constexpr bool value = decltype (get((T*)nullptr ))::value;
80
+ template <typename T> struct is_copy_assignable {
81
+ template <class F >
82
+ static auto get (F *)
83
+ -> decltype(std::declval<F &>() = std::declval<const F &>(),
84
+ std::true_type{});
85
+ static std::false_type get (...);
86
+ static constexpr bool value = decltype (get((T *)nullptr ))::value;
85
87
};
86
88
87
- template <typename T>
88
- struct is_move_assignable {
89
- template < class F >
90
- static auto get (F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
91
- static std::false_type get (...);
92
- static constexpr bool value = decltype (get((T*)nullptr ))::value;
89
+ template <typename T> struct is_move_assignable {
90
+ template < class F >
91
+ static auto get (F *)
92
+ -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
93
+ static std::false_type get (...);
94
+ static constexpr bool value = decltype (get((T *)nullptr ))::value;
93
95
};
94
96
95
- } // end namespace llvm
97
+ } // namespace llvm
96
98
97
99
#endif // LLVM_SUPPORT_TYPE_TRAITS_H
0 commit comments