]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/checked_delete.hpp
64-bit fix to boost::format.
[lyx.git] / boost / boost / checked_delete.hpp
index abb2ce03a2fedb48691f3ddbcca7137c7036ddb2..d7f52122de737cac137e5782923ea5311dc7f8c1 100644 (file)
@@ -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<class T> 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<class T> 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<class T> 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<class T> 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);
     }
 };