Chris Weed schrieb:
On 10/18/07, Vinzenz 'evilissimo' Feenstra <evilissimo@web.de> 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