blob: 57c59e46c1b588abe9146d9e8a321e931d957f1c [file] [log] [blame]
Brian Silvermanfad8f552018-08-04 23:36:19 -07001//////////////////////////////////////////////////////////////////////////////
2//
3// (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
4// Software License, Version 1.0. (See accompanying file
5// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6//
7// See http://www.boost.org/libs/container for documentation.
8//
9//////////////////////////////////////////////////////////////////////////////
10#ifndef BOOST_CONTAINER_DETAIL_ALLOC_TRAITS_HPP
11#define BOOST_CONTAINER_DETAIL_ALLOC_TRAITS_HPP
12
13#ifndef BOOST_CONFIG_HPP
14# include <boost/config.hpp>
15#endif
16
17#if defined(BOOST_HAS_PRAGMA_ONCE)
18# pragma once
19#endif
20
21// move
22#include <boost/move/adl_move_swap.hpp>
23#include <boost/move/utility_core.hpp>
24
25namespace boost {
26namespace container {
27namespace dtl {
28
29template<class AllocatorType>
30inline void swap_alloc(AllocatorType &, AllocatorType &, dtl::false_type)
31 BOOST_NOEXCEPT_OR_NOTHROW
32{}
33
34template<class AllocatorType>
35inline void swap_alloc(AllocatorType &l, AllocatorType &r, dtl::true_type)
36{ boost::adl_move_swap(l, r); }
37
38template<class AllocatorType>
39inline void assign_alloc(AllocatorType &, const AllocatorType &, dtl::false_type)
40 BOOST_NOEXCEPT_OR_NOTHROW
41{}
42
43template<class AllocatorType>
44inline void assign_alloc(AllocatorType &l, const AllocatorType &r, dtl::true_type)
45{ l = r; }
46
47template<class AllocatorType>
48inline void move_alloc(AllocatorType &, AllocatorType &, dtl::false_type)
49 BOOST_NOEXCEPT_OR_NOTHROW
50{}
51
52template<class AllocatorType>
53inline void move_alloc(AllocatorType &l, AllocatorType &r, dtl::true_type)
54{ l = ::boost::move(r); }
55
56} //namespace dtl {
57} //namespace container {
58} //namespace boost {
59
60#endif //#ifndef BOOST_CONTAINER_DETAIL_ALLOC_TRAITS_HPP