map kinds of Ranges

Steven Schveighoffer schveiguy at yahoo.com
Wed May 25 08:48:00 PDT 2011


On Wed, 25 May 2011 11:45:30 -0400, Don <nospam at nospam.com> wrote:

> 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

Yes.  Auto ref is specifically to allow passing rvalues as references to  
functions, not as a template that means either ref or not.  At least, that  
is my understanding from Andrei's description.  I don't have a copy of  
TDPL, but I think it's in there too.

-Steve


More information about the Digitalmars-d mailing list