|
|
|
@ -311,7 +311,7 @@ template <typename T> using remove_all_extents_t = typename array_info<T>::type;
@@ -311,7 +311,7 @@ template <typename T> using remove_all_extents_t = typename array_info<T>::type;
|
|
|
|
|
|
|
|
|
|
template <typename T> using is_pod_struct = all_of< |
|
|
|
|
std::is_standard_layout<T>, // since we're accessing directly in memory we need a standard layout type
|
|
|
|
|
#if !defined(__GNUG__) || defined(_LIBCPP_VERSION) || (defined(_GLIBCXX_USE_CXX11_ABI) && _GLIBCXX_USE_CXX11_ABI != 0) |
|
|
|
|
#if !defined(__GNUG__) || defined(_LIBCPP_VERSION) || defined(_GLIBCXX_USE_CXX11_ABI) |
|
|
|
|
// _GLIBCXX_USE_CXX11_ABI indicates that we're using libstdc++ from GCC 5 or newer, independent
|
|
|
|
|
// of the actual compiler (Clang can also use libstdc++, but it always defines __GNUC__ == 4).
|
|
|
|
|
std::is_trivially_copyable<T>, |
|
|
|
|