On Tuesday, 25 September 2018 at 12:33:30 UTC, RazvanN wrote:
After discussing with Walter and Andrei we have decided that we
are going to drop @implicit for now as it may cause bugs (as
Jonathan has highlighted) and consider constructors that have
the form this(ref $q1 S rhs) $q2 as copy constructors. I will
update the DIP with more information.
Also, regarding the cohabitation between postblit and copy
constructor: in order to make the transition smoother, whenever
a postblit and a copy constructor are found togheter in a
struct, the former is used and the latter is ignored (even if
it is a field postblit). Once the postblit is going to be
deprecated we can do the opposite and use the copy constructor
and ignore the postblit.
If @implicit is going to be introduced then that is going to be
a DIP on its own.
Thanks!
I still think a -dip10xx flag to control which to prefer is worth
doing, since
a) it won't be hard to do and will make the transition smoother
still , and
b) IIRC the motivating factor for this is memory safety. Delaying
memory safety while waiting for a deprecation period to expire (
O(years) ) for code that wants to remain backwards compatible
with older compiler versions is not something we should be
encouraging.
In the deprecation period if no flag is given prefer postblit to
copy if both are defined, if flag is given prefer copy over
postblit.
Nic