Skip to content

Commit cb98eff

Browse files
committed
Merge #14031: Make IS_TRIVIALLY_CONSTRUCTIBLE consistent on GCC < 5, don't patch clang
f1640d0 Make IS_TRIVIALLY_CONSTRUCTIBLE consistent on GCC < 5 (Ben Woosley) Pull request description: `std::is_trivially_constructible<T>` is equivalent to `std::is_trivially_default_constructible<T>` `std::has_trivial_default_constructor<T>` is the GCC < 5 name for `std::is_trivially_default_constructible<T>` https://en.cppreference.com/w/cpp/types/is_default_constructible https://www.gnu.org/software/gcc/gcc-5/changes.html `std::is_trivial` was also used when compiling with clang, due to clang's use of `__GNUC__`. Test `__clang__` to target the intended implementations. https://stackoverflow.com/a/28166605 All callers currently only pass one template argument to IS_TRIVIALLY_CONSTRUCTIBLE, with this change the build would fail if someone attempted passing more. Tree-SHA512: 3e36ddf20a1c0d76ad94d7c95f3fe5b90f4ee00389d5516b35c657136205e7a3ddff60789b0b0b2375624631f15a51eaad3570ef19a7b9df1469a50ba28415d1
2 parents 0ae15bd + f1640d0 commit cb98eff

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/compat.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414

1515
// GCC 4.8 is missing some C++11 type_traits,
1616
// https://www.gnu.org/software/gcc/gcc-5/changes.html
17-
#if defined(__GNUC__) && __GNUC__ < 5
18-
#define IS_TRIVIALLY_CONSTRUCTIBLE std::is_trivial
17+
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 5
18+
#define IS_TRIVIALLY_CONSTRUCTIBLE std::has_trivial_default_constructor
1919
#else
20-
#define IS_TRIVIALLY_CONSTRUCTIBLE std::is_trivially_constructible
20+
#define IS_TRIVIALLY_CONSTRUCTIBLE std::is_trivially_default_constructible
2121
#endif
2222

2323
#ifdef WIN32

0 commit comments

Comments
 (0)