map kinds of Ranges

Don nospam at nospam.com
Wed May 25 08:45:30 PDT 2011


Steven Schveighoffer wrote:
> On Wed, 25 May 2011 10:59:46 -0400, Don <nospam at nospam.com> wrote:
> 
>> Robert Clipsham wrote:
>>> On 24/05/2011 04:28, Jonathan M Davis wrote:
>>>>> Thoughts on this?
>>>>
>>>> I believe that the best and most likely to be implemented syntax 
>>>> which has
>>>> been suggested (it was Andrei's idea IIRC) is to simply add optional 
>>>> clauses
>>>> to attributes. So, instead of pure, you'd do pure(condition). If the 
>>>> condition
>>>> is true, the templated function it's on is pure. If the condition is 
>>>> false,
>>>> then the function isn't pure. Don't expect pure to become @pure or 
>>>> nothrow to
>>>> become @nothrow though. I think that at this point, any attribute 
>>>> which is a
>>>> keyword is going to stay one, and any attribute that has @ on the 
>>>> front of it
>>>> is going to stay that way as well.
>>>>
>>>> - Jonathan M Davis
>>>  Wouldn't it make sense to follow the same syntax as auto ref? auto 
>>> pure, auto nothrow, auto @safe etc? (Although I guess that doesn't 
>>> allow for conditions, nevermind :<)
>>
>> 'auto ref' is one of worst syntax anomalies in the language. It should 
>> be a single keyword -- eg, 'autoref' -- it has nothing in common with 
>> the other use of 'auto', and it's not necessarily 'ref'.
> 
> The current implementation is incorrect.  In a correct implementation 
> auto ref *is* always ref.
> 
> -Steve

You're saying this example from the spec shouldn't compile?

auto ref foo()          { return 3; }  // value return


More information about the Digitalmars-d mailing list