On 5 January 2015 at 12:11, Daniel Murphy via Digitalmars-d <[email protected]> wrote: > "Iain Buclaw via Digitalmars-d" wrote in message > news:[email protected]... > >> That is correct for user code, but not druntime C bindings. >> >> GDC can compile the test in 3568 thanks to the GCC backend providing >> the va_list struct a name (__va_list_tag). >> >> However it for sure cannot run the program though. Only body-less >> declarations in core.stdc.* are rewritten to ref va_list. > > > Druntime and phobos rely on va_list converting to void*. Should this > a) be allowed on platforms where va_list is a pointer > b) always be allowed > c) never be allowed > ???
For consistency? I would go with (c) as va_list could be anything, even a struct (PPC). That and people shouldn't (*!*) be manipulating va_list directly, though unfortunately we do for std.format, etc. The only realistic option would be (a).
