On Friday, 6 May 2016 at 09:31:08 UTC, Steven Schveighoffer wrote:
On 5/6/16 11:06 AM, Dmitry Olshansky wrote:
On 06-May-2016 05:37, Jeremy DeHaan wrote:
On Wednesday, 4 May 2016 at 12:42:30 UTC, jmh530 wrote:
On Wednesday, 4 May 2016 at 02:50:08 UTC, Jeremy DeHaan
wrote:
I'm not sure, but one would think that @safe code wouldn't
need any
extra information about the union. I wouldn't know how to
differentiate between them though during runtime. Probably
someone
with more experience with the compiler would know more
about that
kind of thing.
You can identify safe functions with
https://dlang.org/phobos/std_traits.html#isSafe
or
https://dlang.org/phobos/std_traits.html#functionAttributes
All I meant was that I don't know enough about what the
compiler does
with built in types to make this work. It almost sounds like
we would
need a safe union and unsafe union type and do some extra
stuff for the
unsafe union, but I'm just starting to learn about this stuff.
I'd note that a union without pointers doesn't hurt precise
scanner,
it's only the ones with pointers that are bad.
Ones that have only pointers are probably OK too. Though I'm
not sure if a precise scanner takes into account the type of
the pointer. I would expect it to use embedded typeinfo in
target block.
-Steve
Because of void* and classes, the GC MUST be able to find out
what type was actually allocated, or at least its pointer bitmask.