Chris@16: ////////////////////////////////////////////////////////////////////////////// Chris@16: // Chris@101: // (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: // See http://www.boost.org/libs/container for documentation. Chris@16: // Chris@16: ////////////////////////////////////////////////////////////////////////////// Chris@16: Chris@16: #ifndef BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP Chris@16: #define BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP Chris@16: Chris@101: //! \file Chris@101: //! This header file forward declares boost::container::scoped_allocator_adaptor Chris@101: //! and defines the following types: Chris@101: Chris@101: #ifndef BOOST_CONFIG_HPP Chris@101: # include Chris@101: #endif Chris@101: Chris@101: #if defined(BOOST_HAS_PRAGMA_ONCE) Chris@16: # pragma once Chris@16: #endif Chris@16: Chris@16: #include Chris@16: #include Chris@101: #include Chris@16: Chris@16: #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) Chris@101: #include Chris@16: #endif Chris@16: Chris@16: namespace boost { namespace container { Chris@16: Chris@101: #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED Chris@16: Chris@16: #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) Chris@16: Chris@16: #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST) Chris@16: Chris@101: template Chris@101: class scoped_allocator_adaptor; Chris@16: Chris@16: #else // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST) Chris@16: Chris@101: template Chris@101: class scoped_allocator_adaptor; Chris@16: Chris@101: template Chris@101: class scoped_allocator_adaptor; Chris@16: Chris@16: #endif // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST) Chris@16: Chris@16: #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) Chris@16: Chris@101: template Chris@101: class scoped_allocator_adaptor; Chris@16: Chris@16: #endif Chris@16: Chris@101: template Chris@101: struct std_allocator_arg_holder Chris@101: { Chris@101: static ::std::allocator_arg_t *dummy; Chris@101: }; Chris@101: Chris@101: template Chris@101: ::std::allocator_arg_t *std_allocator_arg_holder::dummy; Chris@101: Chris@101: #else //BOOST_CONTAINER_DOXYGEN_INVOKED Chris@101: Chris@101: #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED Chris@16: Chris@16: //! The allocator_arg_t struct is an empty structure type used as a unique type to Chris@16: //! disambiguate constructor and function overloading. Specifically, several types Chris@16: //! have constructors with allocator_arg_t as the first argument, immediately followed Chris@101: //! by an argument of a type that satisfies Allocator requirements Chris@101: typedef const std::allocator_arg_t & allocator_arg_t; Chris@16: Chris@16: //! A instance of type allocator_arg_t Chris@16: //! Chris@101: static allocator_arg_t allocator_arg = BOOST_CONTAINER_DOC1ST(unspecified, *std_allocator_arg_holder<>::dummy); Chris@16: Chris@16: template Chris@16: struct constructible_with_allocator_suffix; Chris@16: Chris@16: template Chris@16: struct constructible_with_allocator_prefix; Chris@16: Chris@101: template Chris@16: struct uses_allocator; Chris@16: Chris@16: }} // namespace boost { namespace container { Chris@16: Chris@16: #include Chris@16: Chris@16: #endif // BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP