On 01/25/2011 10:45 AM, Jens Mueller wrote:
I distinguish the following: type qualifiers: const, immutable, maybe also inout function attributes: pure, nothrow storage class: ref, in, out, static access qualifiers: private, package, protected, public, export
Nice & clear classification. Then, if you allow replacing "attribute" and "class" by "qualifier" (which by the way both are somewhat confusing because of other common meanings), you get a super-class of qualifiers. All are put aside a name which can denote a plain var, a type etc... Only in case of function they can be prefixed to the whole signature, which creates ambiguity with the return type:
const int square (int x) {...} // func or return type? The obvious consistent choice, imo, would be to place them aside the function name: int const square (int x) {...} const int square (int x) {...} const int const square (int x) {...} but indeed would be a syntactic revolution ;-) Another solution would be to enforce parentheses except in the case of function: const int square (int x) {...} // func const(int) square (int x) {...} // return type Denis -- _________________ vita es estrany spir.wikidot.com