On Monday, 24 December 2012 at 15:52:01 UTC, Jonathan M Davis wrote:
On Monday, December 24, 2012 14:32:55 monarch_dodra wrote:
"ref" is a function qualifier, not a type qualifier, so you could
even write it as:
"const(ReturnType) foo() const ref;"

So technically, it is symetric.

I'm pretty sure that ref is nonsensical in that example. What would ref on a function even mean? It could be used on a function pointer, but then you'd have to have the function keyword in there. It makes no sense on a function prototype like you have there. If that compiles, it's because dmd allows you to put all kinds of modifiers on symbols where the modifier has no effect and
arguably shouldn't be legal.

Wait, never mind that. I thought that was legal.

I was mentioning the fact that if you want to know if a function returns ref, you have check that function's attributes:

http://dlang.org/phobos/std_traits.html#FunctionAttribute

I for one don't think this is a huge problem. There is *some*
confusion for those comming from C++, but they (we) have to learn
D is not C++. Besides, I like the liberty of putting all
qualifiers on the line before the types, including const.

If anything "const" *itself* is VERY confusing for new commers.
WAY more than the syntax used to qualify a function with it.

You're likely to be told to move the const to the right if one of us notices it on the left in a pull request. I believe that quite a few of us consider it
to be bad practice to put it on the left.

- Jonathan M Davis

That's the way the ddoc is generated anyways: Everything on the left.

Reply via email to