On Friday, July 27, 2012 19:34:52 Simen Kjaeraas wrote: > On Fri, 27 Jul 2012 17:35:19 +0200, Jonathan M Davis <jmdavisp...@gmx.com> > > wrote: > > Many of us think that > > > > const Foo func() {} > > > > should just become illegal inconsistency or not because of all of this > > confusion, but Walter doesn't buy into that. > > Like monarch_dodra said, this is also a style favored by some: > > @pure @property const > int foo() { > //... > } > > Having to write that > > @pure @property > int foo() const { > //... > } > > at the very least feels weird. > > int foo() > const @pure @property { > } > > could work, I guess. But it feels backward.
Personally, I _always_ put the attributes on the right-hand side save for the ones which exist in C++ and Java (which is pretty much just the access specifiers, static, override, and final), and I think that it's ugly and confusing to have them on the left, but that's a matter of personal preference. const on the other hand constantly causes issues because - unlike the others - it can be applied to the return type as well. And the question comes up often enough that I think that it's a real problem and one that merits making putting it on the left illegal. At minimum, making it illegal on the left without other attributes between it and the return type should be illegal IMHO (though that could cause even more confusion depending on the error message, since then it might be confusing why you could put it on the left but only in some positions). That change isn't going to happen at this point, but I think that we'd be better off if it were. - Jonathan M Davis