forked from boostorg/utility
This commit was manufactured by cvs2svn to create tag
'merged_to_RC_1_30_0'. [SVN r19627]
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
|
#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
|
||||||
#define BOOST_CHECKED_DELETE_HPP_INCLUDED
|
#define BOOST_CHECKED_DELETE_HPP_INCLUDED
|
||||||
|
|
||||||
#if _MSC_VER >= 1020
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
#pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -10,6 +10,8 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 1999, 2000, 2001, 2002 boost.org
|
// Copyright (c) 1999, 2000, 2001, 2002 boost.org
|
||||||
// Copyright (c) 2002, 2003 Peter Dimov
|
// 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
|
// Permission to copy, use, modify, sell and distribute this software
|
||||||
// is granted provided this copyright notice appears in all copies.
|
// is granted provided this copyright notice appears in all copies.
|
||||||
@@ -26,13 +28,16 @@ namespace boost
|
|||||||
|
|
||||||
template<class 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;
|
delete x;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class 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;
|
delete [] x;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,6 +48,7 @@ template<class T> struct checked_deleter
|
|||||||
|
|
||||||
void operator()(T * x) const
|
void operator()(T * x) const
|
||||||
{
|
{
|
||||||
|
// boost:: disables ADL
|
||||||
boost::checked_delete(x);
|
boost::checked_delete(x);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user