On Thursday, 3 December 2015 at 14:24:52 UTC, Andrei Alexandrescu wrote:
On 12/03/2015 06:13 AM, Vladimir Panteleev wrote:
You said that "at the end of the day there's documentation". I would argue that at least in this case, it may not be enough. Consider, for example, a hypothetical user type "Pack", which takes a tuple/struct and automatically arranges the fields into a struct such that space is used optimally (e.g. all bools are clumped together into a bitfield, enums are only given as much bits as their .max needs, etc.). Pack only needs to know one property of each field: how many bits it really needs, and as such, it might elect to be agnostic of what a pointer is. If it uses std.bitmanip.bitfields as its backend, it will happily pack a pointer at its user's request, and the user will never see the pointer warning in Pack's documentation. And yes, although it's easy to point the finger at users and say "ha ha, it's your own fault, you did not RTFM", I think we
should strive for better than that.

I understand how you feel but I really don't know what else to do, which makes the entire discussion somewhat theoretical.

Doesn't matter as long as it's explicitly opt-in, and there's more than one way to do that. Template parameter flag, an alternative declaration such as unsafeBitfield, disallowing pointers but allowing a shallow wrapper around them ("UnmanagedPtr" OSLT), etc.

Reply via email to