const Propagation
evenex via Digitalmars-d
digitalmars-d at puremagic.com
Mon Dec 29 12:07:08 PST 2014
On Monday, 29 December 2014 at 16:48:46 UTC, Julian Kranz wrote:
> Is that really cool? I mean, is wise to have the compiler treat
> templates and non-templates differently? C++ has tons of such
> inconsistencies which is the main reason I don't really like
> C++...
Well, it is reasonable in light of the fact that templates
require the source to be available (which guarantees the compiler
can analyze it) while regular functions might not be (e.g. if
they are in a precompiled library). In this sense, making a
function into a zero-param template is equivalent to telling the
compiler that it is free to analyze the source.
That being said, I sympathize with the sentiment - it would be
more consistent if all functions whose source was available could
be auto-annotated. I'm not sure what the technical impediments to
this might be, though. Still, adding an extra () to the function
signature is not too inconvenient, and carries some additional
benefits.
I find annotations and qualifiers to be part of the "ugly" side
of D, and try to avoid using them (took me awhile to figure out
that C++ style const-correctness doesn't work in D, due to
transitivity) but I'm afraid don't know enough about compilers to
make a more informed judgement than "that's just how it is."
Maybe someone with more experience in this area could weigh in?
More information about the Digitalmars-d
mailing list