joel falcou wrote:
OK.
Last question. I changed my make_expr to use domain_of and it worked nice for the base case.
I'm confused. You *were* using domain_of and I told you not to. ???
Then I changed the domain of the exponent thingy.
exponent takes a float/double vec adn return an integral vec of the same size. So I gave to simd_exprtag::exponent_ the same domain as vec<integer>. Now I can build things like :
exponent(vf) + vi with the proper type and everything works.
Now, I had some strange behavior in my calalble_context. When I debug it, it seems that the type of exponent(vf) is
simd_expr< vec
, domain< simd_info > > instead of some :
simd_expr< bp::terminal
>, domain< simd_info > > So I don't how how to catch it in my context operator() overload.
For info, my exponent function is something like :
template<class A0> static inline typename proto::result_of::make_expr< tag::exponent_ , domain< make_integrer_vec<A0>::info_type > ----^^^^^^
What is domain here?
, A0 const&> exponent( A0 const a0) { return proto::make_expr< tag::exponent_ , domain< make_integrer_vec<A0>::info_type > >( boost::cref(a0)); }
Please post complete code that I can test. -- Eric Niebler BoostPro Computing http://www.boostpro.com