On Fri, Apr 30, 2010 at 6:27 PM, Joel Falcou <joel.falcou@lri.fr> wrote:

I never encountered that with my own set of transform.

Do you have a small code that cna be compiled out of nowehere ?


I've attached a smallish (~160 lines) file that only depends on
"boost/proto/proto.hpp"


I still get the unwrapping  (gcc 4.4.1 linux FC 11, x86_64 platform) as follows

g++ -Wall -I/home/users/robert/linux_x86_64/src/boost_1_42_0   test_boost_proto.cpp  -o test_boost_proto

test_boost_proto.cpp: In function ‘void clifford::evaluate(Res&, const clifford::ga_expr<Expr>&) [with Res = clifford::multivector<clifford::cga3::rotator_basis, clifford::cga3::cga3>, Expr = boost::proto::exprns_::expr<clifford::tag::reverse_, boost::proto::argsns_::list1<clifford::ga_expr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const clifford::multivector<clifford::cga3::ebivector_basis, clifford::cga3::cga3>&>, 0l> > >, 1l>]’:
test_boost_proto.cpp:126:   instantiated from ‘clifford::multivector<B, A>& clifford::multivector<B, A>::operator=(const clifford::ga_expr<T>&) [with T = boost::proto::exprns_::expr<clifford::tag::reverse_, boost::proto::argsns_::list1<clifford::ga_expr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const clifford::multivector<clifford::cga3::ebivector_basis, clifford::cga3::cga3>&>, 0l> > >, 1l>, B = clifford::cga3::rotator_basis, A = clifford::cga3::cga3]’
test_boost_proto.cpp:164:   instantiated from here
test_boost_proto.cpp:103: error: no matching function for call to ‘evaluate_expr(clifford::multivector<clifford::cga3::rotator_basis, clifford::cga3::cga3>&, boost::proto::exprns_::expr<clifford::tag::reverse_, boost::proto::argsns_::list1<const clifford::ga_expr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const clifford::multivector<clifford::cga3::ebivector_basis, clifford::cga3::cga3>&>, 0l> >&>, 1l>)’