X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=boost%2Fboost%2Fchecked_delete.hpp;h=d7f52122de737cac137e5782923ea5311dc7f8c1;hb=fce4ab0e79bfda9651d7d7f3c951bfb5d7516fc5;hp=abb2ce03a2fedb48691f3ddbcca7137c7036ddb2;hpb=59b6a4701a8d2b5155af08cf758b4ca120201282;p=lyx.git diff --git a/boost/boost/checked_delete.hpp b/boost/boost/checked_delete.hpp index abb2ce03a2..d7f52122de 100644 --- a/boost/boost/checked_delete.hpp +++ b/boost/boost/checked_delete.hpp @@ -1,35 +1,45 @@ #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED #define BOOST_CHECKED_DELETE_HPP_INCLUDED -#if _MSC_VER >= 1020 -#pragma once +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once #endif // // boost/checked_delete.hpp // // Copyright (c) 1999, 2000, 2001, 2002 boost.org +// Copyright (c) 2002, 2003 Peter Dimov +// Copyright (c) 2003 Daniel Frey +// Copyright (c) 2003 Howard Hinnant // // 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. // +// See http://www.boost.org/libs/utility/checked_delete.html for documentation. +// namespace boost { // verify that types are complete for increased safety -template< typename T > inline void checked_delete(T * x) +template inline void checked_delete(T * x) { - typedef char type_must_be_complete[sizeof(T)]; + // intentionally complex - simplification causes regressions + typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; + (void) sizeof(type_must_be_complete); delete x; } -template< typename T > inline void checked_array_delete(T * x) +template inline void checked_array_delete(T * x) { - typedef char type_must_be_complete[sizeof(T)]; + typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; + (void) sizeof(type_must_be_complete); delete [] x; } @@ -38,9 +48,10 @@ template struct checked_deleter typedef void result_type; typedef T * argument_type; - void operator()(T * x) + void operator()(T * x) const { - checked_delete(x); + // boost:: disables ADL + boost::checked_delete(x); } }; @@ -49,9 +60,9 @@ template struct checked_array_deleter typedef void result_type; typedef T * argument_type; - void operator()(T * x) + void operator()(T * x) const { - checked_array_delete(x); + boost::checked_array_delete(x); } };