forked from boostorg/container
Fix has_trivial_destructor_after_move
Most template type parameters 'Allocator' were modified their default type to void since 1.70.0. These modifications cause has_trivial_destructor_after_move to compile error or yield wrong result. So, fix them by changing specializations of has_trivial_destructor_after_move.
This commit is contained in:
@@ -2295,8 +2295,9 @@ namespace boost {
|
||||
template <class T, class Allocator, class Options>
|
||||
struct has_trivial_destructor_after_move<boost::container::deque<T, Allocator, Options> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
typedef typename boost::container::deque<T, Allocator, Options>::allocator_type allocator_type;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value;
|
||||
};
|
||||
|
||||
|
||||
@@ -1622,11 +1622,11 @@ template <class T, class KeyOfValue,
|
||||
class Compare, class AllocatorOrContainer>
|
||||
struct has_trivial_destructor_after_move<boost::container::dtl::flat_tree<T, KeyOfValue, Compare, AllocatorOrContainer> >
|
||||
{
|
||||
typedef typename boost::container::dtl::select_container_type<T, AllocatorOrContainer>::type container_type;
|
||||
typedef typename container_type::allocator_type allocator_t;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_t>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_t>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value;
|
||||
typedef boost::container::dtl::flat_tree<T, KeyOfValue, Compare, AllocatorOrContainer> flat_tree;
|
||||
typedef typename flat_tree::container_type container_type;
|
||||
typedef typename flat_tree::key_compare key_compare;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<container_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<key_compare>::value;
|
||||
};
|
||||
|
||||
} //namespace boost {
|
||||
|
||||
@@ -1516,8 +1516,9 @@ struct has_trivial_destructor_after_move
|
||||
<T, KeyOfValue, Compare, Allocator, Options>
|
||||
>
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
typedef typename ::boost::container::dtl::tree<T, KeyOfValue, Compare, Allocator, Options>::allocator_type allocator_type;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
};
|
||||
|
||||
@@ -1651,10 +1651,10 @@ flat_map(ordered_unique_range_t, InputIterator, InputIterator, Compare const&, A
|
||||
template <class Key, class T, class Compare, class AllocatorOrContainer>
|
||||
struct has_trivial_destructor_after_move<boost::container::flat_map<Key, T, Compare, AllocatorOrContainer> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<AllocatorOrContainer>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<AllocatorOrContainer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::pair<Key, T> value_t;
|
||||
typedef typename ::boost::container::dtl::container_or_allocator_rebind<AllocatorOrContainer, value_t>::type alloc_or_cont_t;
|
||||
typedef ::boost::container::dtl::flat_tree<value_t,::boost::container::dtl::select1st<Key>, Compare, alloc_or_cont_t> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
namespace container {
|
||||
@@ -2961,10 +2961,10 @@ namespace boost {
|
||||
template <class Key, class T, class Compare, class AllocatorOrContainer>
|
||||
struct has_trivial_destructor_after_move< boost::container::flat_multimap<Key, T, Compare, AllocatorOrContainer> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<AllocatorOrContainer>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<AllocatorOrContainer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::pair<Key, T> value_t;
|
||||
typedef typename ::boost::container::dtl::container_or_allocator_rebind<AllocatorOrContainer, value_t>::type alloc_or_cont_t;
|
||||
typedef ::boost::container::dtl::flat_tree<value_t,::boost::container::dtl::select1st<Key>, Compare, alloc_or_cont_t> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
} //namespace boost {
|
||||
|
||||
@@ -1192,10 +1192,8 @@ flat_set(ordered_unique_range_t, InputIterator, InputIterator, Compare const&, A
|
||||
template <class Key, class Compare, class AllocatorOrContainer>
|
||||
struct has_trivial_destructor_after_move<boost::container::flat_set<Key, Compare, AllocatorOrContainer> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<AllocatorOrContainer>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<AllocatorOrContainer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::flat_tree<Key, ::boost::container::dtl::identity<Key>, Compare, AllocatorOrContainer> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
namespace container {
|
||||
@@ -1926,10 +1924,8 @@ flat_multiset(ordered_range_t, InputIterator, InputIterator, Compare const&, All
|
||||
template <class Key, class Compare, class AllocatorOrContainer>
|
||||
struct has_trivial_destructor_after_move<boost::container::flat_multiset<Key, Compare, AllocatorOrContainer> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<AllocatorOrContainer>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<AllocatorOrContainer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::flat_tree<Key, ::boost::container::dtl::identity<Key>, Compare, AllocatorOrContainer> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
namespace container {
|
||||
|
||||
@@ -1522,8 +1522,9 @@ list(InputIterator, InputIterator, ValueAllocator const&) ->
|
||||
template <class T, class Allocator>
|
||||
struct has_trivial_destructor_after_move<boost::container::list<T, Allocator> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
typedef typename boost::container::list<T, Allocator>::allocator_type allocator_type;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value;
|
||||
};
|
||||
|
||||
|
||||
@@ -1366,13 +1366,11 @@ map(ordered_unique_range_t, InputIterator, InputIterator, Compare const&, Alloca
|
||||
|
||||
//!has_trivial_destructor_after_move<> == true_type
|
||||
//!specialization for optimizations
|
||||
template <class Key, class T, class Compare, class Allocator>
|
||||
struct has_trivial_destructor_after_move<boost::container::map<Key, T, Compare, Allocator> >
|
||||
template <class Key, class T, class Compare, class Allocator, class Options>
|
||||
struct has_trivial_destructor_after_move<boost::container::map<Key, T, Compare, Allocator, Options> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::tree<std::pair<const Key, T>, int, Compare, Allocator, Options> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
namespace container {
|
||||
@@ -2292,13 +2290,11 @@ multimap(ordered_range_t, InputIterator, InputIterator, Compare const&, Allocato
|
||||
|
||||
//!has_trivial_destructor_after_move<> == true_type
|
||||
//!specialization for optimizations
|
||||
template <class Key, class T, class Compare, class Allocator>
|
||||
struct has_trivial_destructor_after_move<boost::container::multimap<Key, T, Compare, Allocator> >
|
||||
template <class Key, class T, class Compare, class Allocator, class Options>
|
||||
struct has_trivial_destructor_after_move<boost::container::multimap<Key, T, Compare, Allocator, Options> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::tree<std::pair<const Key, T>, int, Compare, Allocator, Options> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
namespace container {
|
||||
|
||||
@@ -1024,13 +1024,11 @@ set(ordered_unique_range_t, InputIterator, InputIterator, Compare const&, Alloca
|
||||
|
||||
//!has_trivial_destructor_after_move<> == true_type
|
||||
//!specialization for optimizations
|
||||
template <class Key, class Compare, class Options, class Allocator>
|
||||
template <class Key, class Compare, class Allocator, class Options>
|
||||
struct has_trivial_destructor_after_move<boost::container::set<Key, Compare, Allocator, Options> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::tree<Key, void, Compare, Allocator, Options> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
namespace container {
|
||||
@@ -1693,10 +1691,8 @@ multiset(ordered_range_t, InputIterator, InputIterator, Compare const&, Allocato
|
||||
template <class Key, class Compare, class Allocator, class Options>
|
||||
struct has_trivial_destructor_after_move<boost::container::multiset<Key, Compare, Allocator, Options> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value &&
|
||||
::boost::has_trivial_destructor_after_move<Compare>::value;
|
||||
typedef ::boost::container::dtl::tree<Key, void, Compare, Allocator, Options> tree;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
||||
};
|
||||
|
||||
namespace container {
|
||||
|
||||
@@ -1696,8 +1696,9 @@ namespace boost {
|
||||
template <class T, class Allocator>
|
||||
struct has_trivial_destructor_after_move<boost::container::slist<T, Allocator> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
typedef typename boost::container::slist<T, Allocator>::allocator_type allocator_type;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value;
|
||||
};
|
||||
|
||||
|
||||
@@ -2183,8 +2183,9 @@ stable_vector(InputIterator, InputIterator, Allocator const&) ->
|
||||
template <class T, class Allocator>
|
||||
struct has_trivial_destructor_after_move<boost::container::stable_vector<T, Allocator> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
typedef typename boost::container::stable_vector<T, Allocator>::allocator_type allocator_type;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value;
|
||||
};
|
||||
|
||||
|
||||
@@ -3490,9 +3490,9 @@ namespace boost {
|
||||
template <class C, class T, class Allocator>
|
||||
struct has_trivial_destructor_after_move<boost::container::basic_string<C, T, Allocator> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits
|
||||
<typename boost::container::basic_string<C, T, Allocator>::allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
typedef typename boost::container::basic_string<C, T, Allocator>::allocator_type allocator_type;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value;
|
||||
};
|
||||
|
||||
|
||||
@@ -3413,9 +3413,9 @@ namespace boost {
|
||||
template <class T, class Allocator, class Options>
|
||||
struct has_trivial_destructor_after_move<boost::container::vector<T, Allocator, Options> >
|
||||
{
|
||||
typedef typename ::boost::container::allocator_traits
|
||||
<typename boost::container::real_allocator<T, Allocator>::type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
||||
typedef typename boost::container::vector<T, Allocator, Options>::allocator_type allocator_type;
|
||||
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
||||
static const bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
||||
::boost::has_trivial_destructor_after_move<pointer>::value;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user