diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/stdapis/boost/utility/value_init.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/stdapis/boost/utility/value_init.hpp Tue Mar 16 16:12:26 2010 +0000 @@ -0,0 +1,77 @@ +// Copyright 2002, Fernando Luis Cacciola Carballal. +// +// Distributed under 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) +// +// 21 Ago 2002 (Created) Fernando Cacciola +// +#ifndef BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP +#define BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP + +#include "boost/detail/select_type.hpp" +#include "boost/type_traits/cv_traits.hpp" + +namespace boost { + +namespace vinit_detail { + +template +class const_T_base +{ + protected : + + const_T_base() : x() {} + + T x ; +} ; + +template +struct non_const_T_base +{ + protected : + + non_const_T_base() : x() {} + + mutable T x ; +} ; + +template +struct select_base +{ + typedef typename + boost::detail::if_true< ::boost::is_const::value > + ::template then< const_T_base, non_const_T_base >::type type ; +} ; + +} // namespace vinit_detail + +template +class value_initialized : private vinit_detail::select_base::type +{ + public : + + value_initialized() {} + + operator T&() const { return this->x ; } + + T& data() const { return this->x ; } + +} ; + +template +T const& get ( value_initialized const& x ) +{ + return x.data() ; +} +template +T& get ( value_initialized& x ) +{ + return x.data() ; +} + +} // namespace boost + + +#endif +