
On 09/19/2012 02:39 AM, Eric Niebler wrote:
That's simple enough. But since I'm not a CUDA/AMP guy, I can't do this on my own. I would need someone knowledgeable to submit a patch. <nudge>
I believe that when we were initially working on it, you were against changes to make CUDA happy because it's not a real C++ compiler.
As a side node, it also allows use to have shorter symbol names, which was a bit of a problem with Proto.
Any expression template library is going to generate huge symbol names. I don't think there's any way around that, do you?
cuda::node< cuda::tag::plus, cuda::node< cuda::tag::plus, cuda::node< cuda::tag::terminal, int >, cuda::node< cuda::tag::terminal, int > >, cuda::node< cuda::tag::terminal, int > > is shorter (and more readable) than boost::proto::exprns_::basic_expr< boost::proto::tagns_::plus, boost::proto::argns_::list2< boost::proto::exprns_::basic_expr< boost::proto::tagns_::plus, boost::proto::argns_::list2< boost::proto::exprns_::basic_expr< boost::proto::tagns_::terminal, boost::proto::argns_::term<int> >, boost::proto::exprns_::basic_expr< boost::proto::tagns_::terminal, boost::proto::argns_::term<int> > > >, boost::proto::exprns_::basic_expr< boost::proto::tagns_::terminal, boost::proto::argns_::term<int> > > > This is just a + b + c and proto's type is already almost 3 times larger (arguably in great part because of long namespace names). I think proto-11 is going in the right direction by making things variadic, but I don't think it's avoiding instantiating boost.proto-specific expression types yet.