Skip to content
This repository was archived by the owner on Jan 15, 2021. It is now read-only.

Commit 7b74079

Browse files
committed
Use the alignment intrinsic instead of sizeof for sorting tuples
1 parent e665e6e commit 7b74079

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

core-util/v2/detail/polyfill.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,18 +80,18 @@ template <class Condition, typename T = void>
8080
struct enable_if_c : public enable_if_impl<Condition::value, T> {};
8181

8282
template <typename T0, typename T1>
83-
struct size_gt {
84-
static constexpr bool value = sizeof(T0) > sizeof(T1);
83+
struct align_gt {
84+
static constexpr bool value = __alignof__(T0) > __alignof__(T1);
8585
};
8686
template <typename T0, typename T1>
87-
struct size_le {
88-
static constexpr bool value = sizeof(T0) <= sizeof(T1);
87+
struct align_le {
88+
static constexpr bool value = __alignof__(T0) <= __alignof__(T1);
8989
};
9090

9191
template <typename T0, typename T1, typename T = void>
92-
struct enable_if_size_gt : enable_if<size_gt<T0,T1>::value, T> {};
92+
struct enable_if_align_gt : enable_if<align_gt<T0,T1>::value, T> {};
9393
template <typename T0, typename T1, typename T = void>
94-
struct enable_if_size_le : enable_if<size_le<T0,T1>::value, T> {};
94+
struct enable_if_align_le : enable_if<align_le<T0,T1>::value, T> {};
9595

9696

9797

@@ -120,7 +120,7 @@ struct tuple_impl<void, T0> {
120120
};
121121

122122
template <typename T0, typename T1, typename... T>
123-
struct tuple_impl<typename enable_if_size_gt<T0, T1>::type, T0, T1, T...> {
123+
struct tuple_impl<typename enable_if_align_gt<T0, T1>::type, T0, T1, T...> {
124124
T0 t0;
125125
tuple_impl<void, T1, T...> t;
126126

@@ -137,7 +137,7 @@ struct tuple_impl<typename enable_if_size_gt<T0, T1>::type, T0, T1, T...> {
137137
};
138138

139139
template <typename T0, typename T1, typename... T>
140-
struct tuple_impl<typename enable_if_size_le<T0, T1>::type, T0, T1, T...> {
140+
struct tuple_impl<typename enable_if_align_le<T0, T1>::type, T0, T1, T...> {
141141
tuple_impl<void, T1, T...> t;
142142
T0 t0;
143143

0 commit comments

Comments
 (0)