diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/stdapis/boost/ptr_container/nullable.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/stdapis/boost/ptr_container/nullable.hpp Tue Mar 16 16:12:26 2010 +0000 @@ -0,0 +1,63 @@ +// +// Boost.Pointer Container +// +// Copyright Thorsten Ottosen 2003-2005. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/ptr_container/ +// + + +#ifndef BOOST_INDIRECT_CONTAINER_NULLABLE_HPP +#define BOOST_INDIRECT_CONTAINER_NULLABLE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif + +#include +#include +#include +#include + +namespace boost +{ + + template< class T > + struct nullable + { + typedef T type; + }; + + namespace ptr_container_detail + { + template< class T > + type_traits::yes_type is_nullable( const nullable* ); + + type_traits::no_type is_nullable( ... ); + } + + template< class T > + struct is_nullable + { + private: + BOOST_STATIC_CONSTANT( T*, var ); + public: + BOOST_STATIC_CONSTANT(bool, value = sizeof( ptr_container_detail::is_nullable( var ) ) + == sizeof( type_traits::yes_type ) ); + }; + + template< class T > + struct remove_nullable + { + typedef BOOST_DEDUCED_TYPENAME mpl::eval_if< is_nullable, + T, + mpl::identity >::type + type; + }; + +} + +#endif