Steven Schveighoffer wrote:
On Wed, 25 May 2011 10:59:46 -0400, Don <nos...@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

Reply via email to