X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=boost%2Fboost%2Fref.hpp;h=6058d6983197a72ab040bbfeb7e0b04006cc3ece;hb=c48091f33a773732fa6c789927e5833e44108d9d;hp=60a834b70de498d1f0b4f2e3cacd67423748ed25;hpb=59b6a4701a8d2b5155af08cf758b4ca120201282;p=lyx.git diff --git a/boost/boost/ref.hpp b/boost/boost/ref.hpp index 60a834b70d..6058d69831 100644 --- a/boost/boost/ref.hpp +++ b/boost/boost/ref.hpp @@ -1,24 +1,27 @@ #ifndef BOOST_REF_HPP_INCLUDED -# define BOOST_REF_HPP_INCLUDED +#define BOOST_REF_HPP_INCLUDED -# if _MSC_VER+0 >= 1020 -# pragma once -# endif +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif -# include -# include +#include +#include +#include +#include // // ref.hpp - ref/cref, useful helper functions // -// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi@cs.utu.fi) +// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) // Copyright (C) 2001, 2002 Peter Dimov // Copyright (C) 2002 David Abrahams // -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. +// 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) // // See http://www.boost.org/libs/bind/ref.html for documentation. // @@ -31,13 +34,13 @@ template class reference_wrapper public: typedef T type; -#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) +#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1300 ) explicit reference_wrapper(T& t): t_(&t) {} #else - explicit reference_wrapper(T& t): t_(addressof(t)) {} + explicit reference_wrapper(T& t): t_(boost::addressof(t)) {} #endif @@ -52,7 +55,7 @@ private: T* t_; }; -# if defined(__BORLANDC__) && (__BORLANDC__ <= 0x560) +# if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) # define BOOST_REF_CONST # else # define BOOST_REF_CONST const @@ -71,18 +74,11 @@ template inline reference_wrapper BOOST_REF_CONST cref(T const # undef BOOST_REF_CONST # ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -template -class is_reference_wrapper -{ - public: - BOOST_STATIC_CONSTANT(bool, value = false); -}; template -class is_reference_wrapper > +class is_reference_wrapper + : public mpl::false_ { - public: - BOOST_STATIC_CONSTANT(bool, value = true); }; template @@ -92,12 +88,30 @@ class unwrap_reference typedef T type; }; -template -class unwrap_reference > -{ - public: - typedef T type; -}; +# define AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(X) \ +template \ +class is_reference_wrapper< X > \ + : public mpl::true_ \ +{ \ +}; \ +\ +template \ +class unwrap_reference< X > \ +{ \ + public: \ + typedef T type; \ +}; \ +/**/ + +AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper) +#if !defined(BOOST_NO_CV_SPECIALIZATIONS) +AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper const) +AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper volatile) +AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper const volatile) +#endif + +# undef AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF + # else // no partial specialization } // namespace boost @@ -144,8 +158,10 @@ class is_reference_wrapper public: BOOST_STATIC_CONSTANT( bool, value = ( - sizeof(detail::is_reference_wrapper_test(type())) + sizeof(detail::is_reference_wrapper_test(type())) == sizeof(detail::yes_reference_wrapper_t))); + + typedef ::boost::mpl::bool_ type; }; template @@ -157,6 +173,17 @@ class unwrap_reference # endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +template inline typename unwrap_reference::type& +unwrap_ref(T& t) +{ + return t; +} + +template inline T* get_pointer( reference_wrapper const & r ) +{ + return r.get_pointer(); +} + } // namespace boost #endif // #ifndef BOOST_REF_HPP_INCLUDED