On Wednesday, 24 February 2016 at 09:57:51 UTC, Atila Neves wrote:
On Monday, 15 February 2016 at 22:48:16 UTC, Walter Bright
wrote:
rears its head again :-)
Head Const is what C++ has for const, i.e. it is not
transitive, applies to one level only. D has transitive const.
What head const will do for us:
1. make it easy to interface to C++ code that uses const, as
currently it is not very practical to do so, you have to
resort to pragma(mangle)
2. supports single assignment style of programming, even if
the data is otherwise mutable
The downside is, of course, language complexity.
I think that increasing language complexity for the sake of C++
integration is a dubious trade-off, especially since "all"
that's required is correct name mangling. There's no guarantee
of what the C++ side can do with any type of constness anyway,
I'd say that any "extern(C++)" mangles as C++ would and leave
it at that.
Atila
I agree with that concern. I would rather see the effort being
used to improve D - e.g support for GC-free code than to help us
integrate the complexity of C++ that D was intended to get rid of.
--Stephan