Boost logo

Boost Users :

From: Vinzenz 'evilissimo' Feenstra (evilissimo_at_[hidden])
Date: 2007-10-18 11:03:25


Chris Weed schrieb:
> On 10/18/07, Vinzenz 'evilissimo' Feenstra <evilissimo_at_[hidden]> wrote:
>> Vinzenz 'evilissimo' Feenstra schrieb:
>>> Chris Weed schrieb:
>>>> Hi,
>>>> I can't figure out why the following code generates a compile error
>>>> with gcc 3.4:
>>> Hi,
>>>
>>> shouldn't it be:
>>>
>>> template<typename E,typename T>
>>> typename boost::tuples::element<typename
>>> boost::mpl::at_c<E,0>::type::value,T>::type
>>> foo(E e,T t)
>>> {
>>> return t.get<0>();
>>> }
>>>
>>> Regards,
>>> Vinzenz
>> Nevermind this wasn't the problem. Here's a working one ;)
>>
>> #include <boost/mpl/vector_c.hpp>
>> #include <boost/mpl/at.hpp>
>> #include <boost/tuple/tuple.hpp>
>>
>> template<typename E,typename T>
>> typename boost::tuples::element<
>> boost::mpl::at_c<E,0>::type::value , T
>> >::type
>> foo(E e, T t)
>> {
>> return boost::get<0>(t);
>> }
>>
>> int main()
>> {
>> typedef boost::mpl::vector_c<int,0,1> elements;
>> boost::tuple<int> t(1);
>> foo(elements(),t);
>> }
>
> That fixes it, but I don't see why, or what this change had to do with
> the error message.
> Thanks,
> Chris

Look at this error message:
"main.cpp:10: error: invalid use of member (did you forget the `&' ?)"

the rest just describes where it happened.

I don't know why but there's no method get<int>() in tuple anymore or if
there was one. I was confused by this as well. then I had a look into
the 1.34.1 sources and wasn't abled to find a member get<int>()

So I changed the code to use the external one and it worked.

Regards,
Vinzenz


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