diff --git a/include/boost/utility/empty_deleter.hpp b/include/boost/utility/empty_deleter.hpp index ba919cd..778c33a 100644 --- a/include/boost/utility/empty_deleter.hpp +++ b/include/boost/utility/empty_deleter.hpp @@ -20,23 +20,22 @@ #define BOOST_UTILITY_EMPTY_DELETER_HPP_INCLUDED_ #include +#include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif +#if defined(__GNUC__) +#pragma message "This header is deprecated, use boost/utility/null_deleter.hpp instead." +#elif defined(_MSC_VER) +#pragma message("This header is deprecated, use boost/utility/null_deleter.hpp instead.") +#endif + namespace boost { -//! A function object that does nothing and can be used as an empty deleter for \c shared_ptr -struct empty_deleter -{ - //! Function object result type - typedef void result_type; - /*! - * Does nothing - */ - void operator() (const volatile void*) const BOOST_NOEXCEPT {} -}; +//! A deprecated name for \c null_deleter +typedef null_deleter empty_deleter; } // namespace boost diff --git a/include/boost/utility/null_deleter.hpp b/include/boost/utility/null_deleter.hpp new file mode 100644 index 0000000..071385f --- /dev/null +++ b/include/boost/utility/null_deleter.hpp @@ -0,0 +1,44 @@ +/* + * Copyright Andrey Semashev 2007 - 2014. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +/*! + * \file null_deleter.hpp + * \author Andrey Semashev + * \date 22.04.2007 + * + * This header contains a \c null_deleter implementation. This is an empty + * function object that receives a pointer and does nothing with it. + * Such empty deletion strategy may be convenient, for example, when + * constructing shared_ptrs that point to some object that should not be + * deleted (i.e. a variable on the stack or some global singleton, like std::cout). + */ + +#ifndef BOOST_UTILITY_NULL_DELETER_HPP_INCLUDED_ +#define BOOST_UTILITY_NULL_DELETER_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { + +//! A function object that does nothing and can be used as an empty deleter for \c shared_ptr +struct null_deleter +{ + //! Function object result type + typedef void result_type; + /*! + * Does nothing + */ + template< typename T > + void operator() (T*) const BOOST_NOEXCEPT {} +}; + +} // namespace boost + +#endif // BOOST_UTILITY_NULL_DELETER_HPP_INCLUDED_