Fixed Intel 7 issue (reported by Daniel Frey)

[SVN r19145]
This commit is contained in:
Peter Dimov committed 2014-06-01 01:15:24 +03:00
1 parent 5da17fb9ef
commit 82aa7bfcbc
2 files changed
+6 -5

No files matched your search

+2 -3
View File
@@ -23,9 +23,8 @@ namespace
int main() int main()
{ {
Incomplete * p; Incomplete * p = 0;
boost::checked_delete(p); // should cause compile time error boost::checked_delete(p); // should cause compile time error
Incomplete ** pa; boost::checked_array_delete(p); // should cause compile time error
boost::checked_array_delete(pa); // should cause compile time error
return 0; return 0;
} // main } // main
+4 -2
View File
@@ -26,13 +26,14 @@ 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)]; // Intel 7 accepts sizeof(incomplete) as 0 in system headers
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
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 ];
delete [] x; delete [] x;
} }
@@ -43,6 +44,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);
} }
}; };