Boost logo

Boost Users :

From: François Duranleau (duranlef_at_[hidden])
Date: 2006-01-22 00:08:59


On Sat, 21 Jan 2006, JOAQUIN LOPEZ MU?Z wrote:

> ----- Mensaje original -----
> De: Frank Birbacher <bloodymir.crap_at_[hidden]>
> Fecha: Sábado, Enero 21, 2006 2:29 am
> Asunto: [Boost-users] [tuple] no easy access to get function
>
>> Today I wanted to std::transform a range of tuples into a sequence of
>> one element. I thought I could just take the address of some
>> tuple::get<N> function. Maybe also specify the Tuple type as template
>> parameter [...]
>> I'd rather want to take the address of boost::tuple::get<N,Tuple>,
>> but the template parameters won't match.
>
> Maybe you forgot the final s in "tuples" when
> writing
>
> boost::tuples::get<N,Tuple>

There is a thin wrapper declared in the boost namespace as well. The
probleme is elsewhere. The argument to the get function is not a
boost::tuple<>, but some base class template. Thus the template arguments
of the function are not and an integer and a tuple, but an integer and
something else (actually, a cons<HT,TT> if you look in the code). To take
the address of such a function, you need to bind the integer, as well as
HT and TT, not a tuple.

However, I am wondering if there would be a problem to declare the thin
wrapper simply like this (example with the const version):

template< int N ,
           typename Tuple >
inline
typename tuples::access_traits<
              typename tuples::element< N , Tuples >::type
>::const_type
get( const Tuple& t )
{
     return tuples::get< N >( c ) ;
}

?

-- 
François Duranleau
LIGUM, Université de Montréal
"Ne me demandez pas comment ça va, car je vous mentirai."
                                                                 - moi-même

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net