mirror of
https://github.com/boostorg/function.git
synced 2025-07-31 13:27:14 +02:00
Use std::is_trivially_copyable instead of is_trivially_copy_constructible + is_trivially_destructible
This commit is contained in:
@ -601,13 +601,12 @@ namespace boost {
|
|||||||
|
|
||||||
#if defined( BOOST_LIBSTDCXX_VERSION ) && BOOST_LIBSTDCXX_VERSION < 50000
|
#if defined( BOOST_LIBSTDCXX_VERSION ) && BOOST_LIBSTDCXX_VERSION < 50000
|
||||||
|
|
||||||
template<class T> struct is_trivially_copy_constructible: std::integral_constant<bool, std::is_copy_constructible<T>::value && std::has_trivial_copy_constructor<T>::value>
|
template<class T> struct is_trivially_copyable: std::integral_constant<bool,
|
||||||
{
|
__has_trivial_copy(T) && __has_trivial_assign(T) && __has_trivial_destructor(T)> {};
|
||||||
};
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
using std::is_trivially_copy_constructible;
|
using std::is_trivially_copyable;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -846,8 +845,7 @@ namespace boost {
|
|||||||
if (stored_vtable.assign_to(std::move(f), functor)) {
|
if (stored_vtable.assign_to(std::move(f), functor)) {
|
||||||
std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
|
std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
|
||||||
// coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
|
// coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
|
||||||
if (boost::detail::function::is_trivially_copy_constructible<Functor>::value &&
|
if (boost::detail::function::is_trivially_copyable<Functor>::value &&
|
||||||
std::is_trivially_destructible<Functor>::value &&
|
|
||||||
boost::detail::function::function_allows_small_object_optimization<Functor>::value)
|
boost::detail::function::function_allows_small_object_optimization<Functor>::value)
|
||||||
value |= static_cast<std::size_t>(0x01);
|
value |= static_cast<std::size_t>(0x01);
|
||||||
vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
|
vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
|
||||||
@ -880,8 +878,7 @@ namespace boost {
|
|||||||
if (stored_vtable.assign_to_a(std::move(f), functor, a)) {
|
if (stored_vtable.assign_to_a(std::move(f), functor, a)) {
|
||||||
std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
|
std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
|
||||||
// coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
|
// coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
|
||||||
if (boost::detail::function::is_trivially_copy_constructible<Functor>::value &&
|
if (boost::detail::function::is_trivially_copyable<Functor>::value &&
|
||||||
std::is_trivially_destructible<Functor>::value &&
|
|
||||||
boost::detail::function::function_allows_small_object_optimization<Functor>::value)
|
boost::detail::function::function_allows_small_object_optimization<Functor>::value)
|
||||||
value |= static_cast<std::size_t>(0x01);
|
value |= static_cast<std::size_t>(0x01);
|
||||||
vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
|
vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
|
||||||
|
Reference in New Issue
Block a user