diff options
Diffstat (limited to 'boost/container/scoped_allocator_fwd.hpp')
-rw-r--r-- | boost/container/scoped_allocator_fwd.hpp | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/boost/container/scoped_allocator_fwd.hpp b/boost/container/scoped_allocator_fwd.hpp index f19e27e885..003ed9f7f7 100644 --- a/boost/container/scoped_allocator_fwd.hpp +++ b/boost/container/scoped_allocator_fwd.hpp @@ -15,16 +15,20 @@ //! This header file forward declares boost::container::scoped_allocator_adaptor //! and defines the following types: -#if defined(_MSC_VER) +#ifndef BOOST_CONFIG_HPP +# include <boost/config.hpp> +#endif + +#if defined(BOOST_HAS_PRAGMA_ONCE) # pragma once #endif #include <boost/container/detail/config_begin.hpp> #include <boost/container/detail/workaround.hpp> +#include <boost/container/detail/std_fwd.hpp> #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) -#include <boost/container/detail/preprocessor.hpp> -#include <boost/container/detail/type_traits.hpp> +#include <boost/move/detail/fwd_macros.hpp> #endif namespace boost { namespace container { @@ -35,41 +39,48 @@ namespace boost { namespace container { #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST) - template <typename OuterAlloc, typename ...InnerAllocs> - class scoped_allocator_adaptor; + template <typename OuterAlloc, typename ...InnerAllocs> + class scoped_allocator_adaptor; #else // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST) - template <typename ...InnerAllocs> - class scoped_allocator_adaptor; + template <typename ...InnerAllocs> + class scoped_allocator_adaptor; - template <typename OuterAlloc, typename ...InnerAllocs> - class scoped_allocator_adaptor<OuterAlloc, InnerAllocs...>; + template <typename OuterAlloc, typename ...InnerAllocs> + class scoped_allocator_adaptor<OuterAlloc, InnerAllocs...>; #endif // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST) - #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) -template <typename OuterAlloc -BOOST_PP_ENUM_TRAILING( BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS - , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT, container_detail::nat) -> -class scoped_allocator_adaptor; + template <typename OuterAlloc, BOOST_MOVE_CLASSDFLT9> + class scoped_allocator_adaptor; #endif + template <int Dummy = 0> + struct std_allocator_arg_holder + { + static ::std::allocator_arg_t *dummy; + }; + + template <int Dummy> + ::std::allocator_arg_t *std_allocator_arg_holder<Dummy>::dummy; + +#else //BOOST_CONTAINER_DOXYGEN_INVOKED + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! The allocator_arg_t struct is an empty structure type used as a unique type to //! disambiguate constructor and function overloading. Specifically, several types //! have constructors with allocator_arg_t as the first argument, immediately followed -//! by an argument of a type that satisfies the Allocator requirements -struct allocator_arg_t{}; +//! by an argument of a type that satisfies Allocator requirements +typedef const std::allocator_arg_t & allocator_arg_t; //! A instance of type allocator_arg_t //! -static const allocator_arg_t allocator_arg = allocator_arg_t(); +static allocator_arg_t allocator_arg = BOOST_CONTAINER_DOC1ST(unspecified, *std_allocator_arg_holder<>::dummy); template <class T> struct constructible_with_allocator_suffix; @@ -77,7 +88,7 @@ struct constructible_with_allocator_suffix; template <class T> struct constructible_with_allocator_prefix; -template <typename T, typename Alloc> +template <typename T, typename Allocator> struct uses_allocator; }} // namespace boost { namespace container { |