Subject: [Boost-bugs] [Boost C++ Libraries] #4175: [Proto] possible loss of expression wrappers in pass-through transforms
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2010-04-30 23:30:36
#4175: [Proto] possible loss of expression wrappers in pass-through transforms
---------------------------------------------------------+------------------
Reporter: Robert Valkenburg <rj.valkenburg@â¦> | Owner: eric_niebler
Type: Bugs | Status: new
Milestone: Boost 1.43.0 | Component: proto
Version: Boost 1.42.0 | Severity: Problem
Keywords: proto pass through transforms |
---------------------------------------------------------+------------------
extended expressions seem to be getting unwrapped in proto pass through
transforms.
Others have not observed this effect so it may be a compiler/platform
issue (or programmer of course)
I've attached a smallish (~160 lines) file that only depends on
"boost/proto/proto.hpp"
The results are as follows (gcc 4.4.1 linux FC 11, x86_64 platform)
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>)â
The clifford::ga_expr<> got removed so it was unable to find
evaluate_expr()
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/4175> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:03 UTC