Boost logo

Boost :

Subject: Re: [boost] [repost] Futures Review - can move_dest_type be public?
From: Anthony Williams (anthony.ajw_at_[hidden])
Date: 2009-02-10 12:22:09


"vicente.botet" <vicente.botet_at_[hidden]> writes:

>> Hi,
>>
>> The function get is defined in the documentation with following prototypes
>>
>> R&& unique_future::get();
>> R& unique_future<R&>::get();
>> void unique_future<void>::get();
>>
>> But when the move semantic is emulated this is just translated as
>>
>> move_dest_type get()
>>
>> with move_dest_type defined depending on the future template parameter as follows
>>
>> typedef typename detail::future_traits<R>::move_dest_type move_dest_type;
>>
>> template<typename T>
>> struct future_traits
>> {
>> #ifdef BOOST_HAS_RVALUE_REFS
>> typedef T const& source_reference_type;
>> struct dummy;
>> typedef typename boost::mpl::if_<boost::is_fundamental<T>,dummy&,T&&>::type rvalue_source_type;
>> typedef typename boost::mpl::if_<boost::is_fundamental<T>,T,T&&>::type move_dest_type;
>> #else
>> typedef T& source_reference_type;
>> typedef typename boost::mpl::if_<boost::is_convertible<T&,boost::detail::thread_move_t<T> >,boost::detail::thread_move_t<T>,T const&>::type rvalue_source_type;
>> typedef typename boost::mpl::if_<boost::is_convertible<T&,boost::detail::thread_move_t<T> >,boost::detail::thread_move_t<T>,T>::type move_dest_type;
>> #endif
>>
>> };
>>
>> Generic libraries using the futures needs to get the type returned by
>> get. What do you think about making the move_dest_type public at
>> least when BOOST_HAS_RVALUE_REFS is not defined? Another option would
>> be to make public the future_traits class.

That's an interesting idea. I can see the benefit of being able to know
the type of unique_future<T>::get() without having to use
decltype/BOOST_TYPEOF.

Maybe a unique_future<T>::get_result_type typedef would be most
appropriate.

Anthony

-- 
Author of C++ Concurrency in Action | http://www.manning.com/williams
just::thread C++0x thread library   | http://www.stdthread.co.uk
Just Software Solutions Ltd         | http://www.justsoftwaresolutions.co.uk
15 Carrallack Mews, St Just, Cornwall, TR19 7UL, UK. Company No. 5478976

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk