mirror of
https://github.com/pybind/pybind11.git
synced 2025-02-18 14:40:49 +00:00
Merge branch 'master' into smart_holder
This commit is contained in:
commit
7c7c336d6d
@ -319,14 +319,13 @@ template <typename T> using remove_all_extents_t = typename array_info<T>::type;
|
|||||||
|
|
||||||
template <typename T> using is_pod_struct = all_of<
|
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
|
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)
|
#if defined(__GLIBCXX__) && (__GLIBCXX__ < 20150422 || __GLIBCXX__ == 20150623 || __GLIBCXX__ == 20150626 || __GLIBCXX__ == 20160803)
|
||||||
// _GLIBCXX_USE_CXX11_ABI indicates that we're using libstdc++ from GCC 5 or newer, independent
|
// libstdc++ < 5 (including versions 4.8.5, 4.9.3 and 4.9.4 which were released after 5)
|
||||||
// of the actual compiler (Clang can also use libstdc++, but it always defines __GNUC__ == 4).
|
// don't implement is_trivially_copyable, so approximate it
|
||||||
std::is_trivially_copyable<T>,
|
|
||||||
#else
|
|
||||||
// GCC 4 doesn't implement is_trivially_copyable, so approximate it
|
|
||||||
std::is_trivially_destructible<T>,
|
std::is_trivially_destructible<T>,
|
||||||
satisfies_any_of<T, std::has_trivial_copy_constructor, std::has_trivial_copy_assign>,
|
satisfies_any_of<T, std::has_trivial_copy_constructor, std::has_trivial_copy_assign>,
|
||||||
|
#else
|
||||||
|
std::is_trivially_copyable<T>,
|
||||||
#endif
|
#endif
|
||||||
satisfies_none_of<T, std::is_reference, std::is_array, is_std_array, std::is_arithmetic, is_complex, std::is_enum>
|
satisfies_none_of<T, std::is_reference, std::is_array, is_std_array, std::is_arithmetic, is_complex, std::is_enum>
|
||||||
>;
|
>;
|
||||||
|
Loading…
Reference in New Issue
Block a user