Use __is_trivially_copyable if possible.
This commit is contained in:
parent
694378f9ab
commit
a08b1f9107
@ -7,6 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "td/utils/int_types.h"
|
#include "td/utils/int_types.h"
|
||||||
|
#include "td/utils/port/platform.h"
|
||||||
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
@ -31,9 +32,13 @@ constexpr size_t member_function_argument_count() {
|
|||||||
return member_function_class<FunctionT>::argument_count();
|
return member_function_class<FunctionT>::argument_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
// no std::is_trivially_copyable in libstdc++ before 5.0
|
// there is no std::is_trivially_copyable in libstdc++ before 5.0
|
||||||
#if __GLIBCXX__
|
#if __GLIBCXX__
|
||||||
|
#if TD_CLANG || (TD_GCC && __GNUC__ >= 5) // but clang >= 3.0 and g++ >= 5.0 supports __is_trivially_copyable
|
||||||
|
#define TD_IS_TRIVIALLY_COPYABLE(T) __is_trivially_copyable(T)
|
||||||
|
#else
|
||||||
#define TD_IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T)
|
#define TD_IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T)
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#define TD_IS_TRIVIALLY_COPYABLE(T) ::std::is_trivially_copyable<T>::value
|
#define TD_IS_TRIVIALLY_COPYABLE(T) ::std::is_trivially_copyable<T>::value
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user