On Wednesday, 6 February 2013 at 20:30:40 UTC, Maxim Fomin wrote:
The fact that bar() does not work and (&bar)() works is terrific.

Sorry - but I don't understand what is terrific? Is this sarcasm?

struct X {
  this(this) { c = c.dup; }
  char c[];
}

(1) What is special about 'struct Y { const(X) x; }' versus 'void goo(const(X) x) {}'? Both require a copy of X, but for some reason the 'struct Y { const(X) x; }' requires the postblit to have signature 'this(this) const {...}'.
    Why is this?

(2) Do structs have, or is it planned that structs will have, true copy constructors (as opposed to postblits)?

(3) I know there have been threads on postblits and const types...
    Here is one:
http://forum.dlang.org/thread/CAFDvkcvvL8GxHQB=Rw9pTm-uxOKzNGVQNDv9w5Os3SkQCc=d...@mail.gmail.com
    and from it:

   > Qualified postblits make no sense, given that if
   > the object is const or immutable, you _can't_
   > alter it without violating the type system. But
   > without them, you can't copy const or immutable
   > objects which require a postblit.  Walter and
   > Andrei have stated in the past that they had a
   > plan for solving this, but AFAIK, they've never
   > actually revealed what it is. My best guess would
   > be to introduce copy constructors for const and
   > immutable objects, but I don't know. Regardless,
   > this is a situation that definitely needs to be
   > clarified and properly sorted out.
   >
   > - Jonathan M Davis

    Can someone summarize where this stands?
    Is the general thinking that everything is fine now?



Reply via email to