From 119c64be0be476f416ef8a8585e1948a2d65b26d Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Wed, 8 Jan 2003 17:21:10 +0000 Subject: [PATCH] Workaround VC7 bug which strips const from nested classes [SVN r16797] --- include/boost/utility/addressof.hpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/boost/utility/addressof.hpp b/include/boost/utility/addressof.hpp index a434b8e..de8dfe5 100644 --- a/include/boost/utility/addressof.hpp +++ b/include/boost/utility/addressof.hpp @@ -14,13 +14,25 @@ // For more information, see http://www.boost.org #ifndef BOOST_UTILITY_ADDRESSOF_HPP -#define BOOST_UTILITY_ADDRESSOF_HPP +# define BOOST_UTILITY_ADDRESSOF_HPP + +# include +# include +# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) +# include +# endif namespace boost { // Do not make addressof() inline. Breaks MSVC 7. (Peter Dimov) -template T* addressof(T& v) +// VC7 strips const from nested classes unless we add indirection here +# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) +template typename add_pointer::type +# else +template T* +# endif +addressof(T& v) { return reinterpret_cast( &const_cast(reinterpret_cast(v)));