A few questions
Jonathan M Davis
jmdavisProg at gmx.com
Fri Jul 27 08:35:19 PDT 2012
On Friday, July 27, 2012 12:29:13 Namespace wrote:
> 1.
> Why are these two method header identitcal?
>
> const Foo some_function() {
>
> and
>
> Foo some_function() const {
>
> ?
> const(Foo) but ref Foo. This is inconsistency, if you ask me.
> So why is between C++ and D such a huge difference?
> Why isn't it simply const Foo instead of const(Foo)?
Sadly, the reason is consistency. const is an attribute just like pure or
nothrow, and you can do both
pure Foo func() {}
and
Foo func() pure {}
as well as
pure { Foo func() {} }
and
pure : Foo func() {}
If
const Foo func() {}
made Foo const rather than func, it would be inconsistent with the other
attributes, and if const on func were only legal on the right (as in C++),
then it would be inconsistent with the others. 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.
> 2.
> What's about a shorthand for debug assertions?
> E.g. to avoid not-null references (yes, if you're a windows user,
> you hate them):
Walter's stand on this is that the OS gives you null-dereferencing detection -
i.e. segfaults and access violations. He's not going to add extra syntax for
it.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list