|
Boost Users : |
Subject: Re: [Boost-users] phoenix function problem
From: Joel de Guzman (joel_at_[hidden])
Date: 2010-04-23 19:41:31
On 4/23/2010 2:58 PM, Olaf Peter wrote:
>> Your operator()s are wrong (C++ error, unrelated to phoenix).
>> Try this:
>>
>> #if WANT_TO_HAVE
>> template<typename T, typename ID>
>> struct result { typedef vector_type type; };
>>
>> vector_type operator()( const vector_type& v, rlc ) const
>> {
>> return fusion::as_nview<0, 1, 2>( v );
>> }
>>
>> vector_type operator()( const vector_type& v, lcr ) const
>> {
>> return fusion::as_nview<2, 0, 1>( v );
>> }
>>
>> #else
>
> This fails to compile as well:
Olaf, I recommended writing the code above (see the operator() is
*not* a template. Why do you still insist on writing it as a
template? Here is your problem:
template <typename T>
vector_type operator()( const vector_type& v, rlc ) const
{
return fusion::as_nview<0, 1, 2>( v );
}
template <typename T>
vector_type operator()( const vector_type& v, lcr ) const
{
return fusion::as_nview<2, 0, 1>( v );
}
because you don't have any arguments with T.
Regards
-- Joel de Guzman http://www.boostpro.com http://spirit.sf.net http://www.facebook.com/djowel Meet me at BoostCon http://www.boostcon.com/home http://www.facebook.com/boostcon
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