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.