Boost logo

Proto :

Subject: Re: [proto] Nested Transforms
From: Eric Niebler (eric_at_[hidden])
Date: 2011-02-28 23:04:27


On 2/28/2011 11:40 PM, Nate Knight wrote:
>
> On Feb 26, 2011, at 4:55 AM, Eric Niebler wrote:
>>
>> I think I know what's causing this. Can you try compiling with
>> BOOST_PROTO_STRICT_RESULT_OF?
>
> Eric,
>
> Thanks for the information. Compiling with BOOST_PROTO_STRICT_RESULT_OF
> allows the first commented line to compile. I guess we'll wait to hear from Joel about
> the impact of this change on the run times of his library.
>
> The second commented line does not compile. This seems to be because there are no
> 'const Expr&' overloads of boost::proto::transform::operator(). Is this correct? The pertinent
> part of the compiler error (from clang) is

<snip>

That's correct. This code compiles on trunk. I made a late fix that
didn't make it into 1.46. If we ship a point release, I'll merge it over.

But even with this fix, it can crop up in other circumstances. This is a
Proto gotcha. It's missing a bunch of overloads in the interest of
compile times (transform_impl is instantiated /everywhere/), but I need
to reconsider this because you're not the first to get bitten by this.

If you file a bug, I'll get around to it eventually. Some day, I'll use
rvalue refs and this problem will just go away.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com

Proto list run by eric at boostpro.com