On Friday, 2 September 2016 at 07:46:30 UTC, Rory McGuire wrote:
actually, from my PoV solution is supereasy: just remove ALL
visibility restrictions for traits. and i mean all. allMembers
should return all members, getMember should allow to access *any*
existing member without annoying messages. it is up to programmer
to insert getProtection checks if he needs it.
traits is a low-level feature by definition, and doesn't meant to
be used directly (we have std.traits wrappers for that), so i
want D devs to stop making our, low-level coders, life harder
than it is now. ;-)
D devs just should draw the line between __traits and std.traits.
first sould be inherently unsafe, allow *everything* and impose
as little restrictions as it is possible (note: *as* *possible*,
not *as* *sane* -- all kind of insanity should be allowed, if it
is possible). then, std.traits wrappers should use __traits to
build *safe* things (declaring that @trusted in the end).