template< typename T >
inline void checked_delete(T * x)
{
-# if !((defined(__BORLANDC__) && __BORLANDC__ <= 0x0551) || (defined(__ICL) && __ICL <= 500))
- BOOST_STATIC_ASSERT( sizeof(T) ); // assert type complete at point
- // of instantiation
-# else
- sizeof(T); // force error if type incomplete
-# endif
+ BOOST_STATIC_ASSERT( sizeof(T) != 0 ); // assert type complete at point
+ // of instantiation
delete x;
}
template< typename T >
inline void checked_array_delete(T * x)
{
-# if !((defined(__BORLANDC__) && __BORLANDC__ <= 0x0551) || (defined(__ICL) && __ICL <= 500))
- BOOST_STATIC_ASSERT( sizeof(T) ); // assert type complete at point
- // of instantiation
-# else
- sizeof(T); // force error if type incomplete
-# endif
+ BOOST_STATIC_ASSERT( sizeof(T) != 0 ); // assert type complete at point
+ // of instantiation
delete [] x;
}
const noncopyable& operator=( const noncopyable& );
}; // noncopyable
-// class tied -------------------------------------------------------//
-
- // A helper for conveniently assigning the two values from a pair
- // into separate variables. The idea for this comes from Jaakko J\84rvi's
- // Binder/Lambda Library.
-
- // Constributed by Jeremy Siek
-
- template <class A, class B>
- class tied {
- public:
- inline tied(A& a, B& b) : _a(a), _b(b) { }
- template <class U, class V>
- inline tied& operator=(const std::pair<U,V>& p) {
- _a = p.first;
- _b = p.second;
- return *this;
- }
- protected:
- A& _a;
- B& _b;
- };
-
- template <class A, class B>
- inline tied<A,B> tie(A& a, B& b) { return tied<A,B>(a, b); }
} // namespace boost