Steven Schveighoffer wrote:
Hm... in C++, I don't think that convention is checked at all. For
example, I can do template<class T> and specify int as the T, and
everything compiles.
Yah.
But in the case of properties only allowed without parens, functions
require parens, you are defining a rule for the compiler. Think of the
parentheses as an extension of the function name, like punctuation.
But you say no parens means query, parens means action. This is sheer
unchecked convention.
Like the word "so":
so!
so?
so? :o)
Two different meanings, same word. Analogously to our property
discussion, the compiler can know that one is an exclamation, and one is
a question, but doesn't really know the meaning of "so!" or "so?". It
can enforce that you use a question where a question is needed, and an
exclamation where an exclamation is needed.
But a person sees it immediately and understands the difference in the
implied meaning. The parens-means-function and
lack-of-parens-means-field convention is well well established (except
for D) as something that works, I don't think you would have the same
confusion as your typename/class example.
Maybe less confusion, definitely more burden.
Andrei