Skip to content

Commit

Permalink
Merge #14031: Make IS_TRIVIALLY_CONSTRUCTIBLE consistent on GCC < 5, …
Browse files Browse the repository at this point in the history
…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
  • Loading branch information
laanwj committed Aug 27, 2018
2 parents 0ae15bd + f1640d0 commit cb98eff
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@

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

#ifdef WIN32
Expand Down

0 comments on commit cb98eff

Please sign in to comment.