From 57a585ed46f638d15e79684e824e99d8ec1ab86d Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Thu, 2 Nov 2017 11:51:23 -0400 Subject: [PATCH] sp_array_construct condition for trivial should include has_trivial_destructor --- .../boost/smart_ptr/allocate_shared_array.hpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/include/boost/smart_ptr/allocate_shared_array.hpp b/include/boost/smart_ptr/allocate_shared_array.hpp index 23c35af..53023e7 100644 --- a/include/boost/smart_ptr/allocate_shared_array.hpp +++ b/include/boost/smart_ptr/allocate_shared_array.hpp @@ -175,7 +175,8 @@ sp_array_destroy(A& allocator, T* start, std::size_t size) template inline typename sp_enable::value && - boost::has_trivial_assign::value>::type + boost::has_trivial_assign::value && + boost::has_trivial_destructor::value>::type sp_array_construct(A&, T* start, std::size_t size) { for (std::size_t i = 0; i < size; ++i) { @@ -186,7 +187,8 @@ sp_array_construct(A&, T* start, std::size_t size) template inline typename sp_enable::value && - boost::has_trivial_assign::value>::type + boost::has_trivial_assign::value && + boost::has_trivial_destructor::value>::type sp_array_construct(A&, T* start, std::size_t size, const T* list, std::size_t count) { @@ -199,7 +201,8 @@ sp_array_construct(A&, T* start, std::size_t size, const T* list, template inline typename sp_enable::value && - boost::has_trivial_assign::value)>::type + boost::has_trivial_assign::value && + boost::has_trivial_destructor::value)>::type sp_array_construct(A& none, T* start, std::size_t size) { std::size_t i = 0; @@ -216,7 +219,8 @@ sp_array_construct(A& none, T* start, std::size_t size) template inline typename sp_enable::value && - boost::has_trivial_assign::value)>::type + boost::has_trivial_assign::value && + boost::has_trivial_destructor::value)>::type sp_array_construct(A& none, T* start, std::size_t size, const T* list, std::size_t count) { @@ -234,7 +238,8 @@ sp_array_construct(A& none, T* start, std::size_t size, const T* list, template inline typename sp_enable::value && - boost::has_trivial_assign::value)>::type + boost::has_trivial_assign::value && + boost::has_trivial_destructor::value)>::type sp_array_construct(A&, T* start, std::size_t size) { for (std::size_t i = 0; i < size; ++i) { @@ -245,7 +250,8 @@ sp_array_construct(A&, T* start, std::size_t size) template inline typename sp_enable::value && - boost::has_trivial_assign::value)>::type + boost::has_trivial_assign::value && + boost::has_trivial_destructor::value)>::type sp_array_construct(A&, T* start, std::size_t size, const T* list, std::size_t count) {