
On 4/23/2010 1:49 AM, Olaf Peter wrote:
Hi,
in the example attached, the 1st test case fails on runtime:
test_phoenix_fcn.cpp(105): test 'at_c<0>( rlc )&& at_c<1>( rlc )&& at_c<2>( rlc )' failed in function 'int main(int, char**)' test_phoenix_fcn: /home/olaf/Projects/programming/cpp/boost/trunk/boost/optional/optional.hpp:591: typename boost::optional_detail::optional_base<T>::reference_type boost::optional<T>::get() [with T = double]: Assertion `this->is_initialized()' failed. Aborted
the 2nd (with defined WANT_TO_HAVE) doesn't compile. This is the goal.
Where is my misunderstanding here? To to get it working correctly?
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 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