Why do we have uncommented and undocumented symbols in std.traits?
Petar
Petar
Fri May 7 20:50:34 UTC 2021
On Friday, 7 May 2021 at 16:31:35 UTC, Andrei Alexandrescu wrote:
> BooleanTypeOf
> IntegralTypeOf
> FloatingPointTypeOf
> NumericTypeOf
> UnsignedTypeOf
> SignedTypeOf
> CharTypeOf
> StaticArrayTypeOf
> DynamicArrayTypeOf
> ArrayTypeOf
> AssocArrayTypeOf
> BuiltinTypeOf
>
> Looking at their subtly repetitive definitions, they are
> specious to start with, but they have absolutely no comments so
> who knows what they're useful for.
>
> People ask "what would do phobos better?" and it's ironic
> because literally whatever file I open there are dozens of
> immediate and urgent improvements to be done that scream at you.
As far as I can tell from the [PR][0] that added them, they were
needed so that `std.format` can treat `struct S(T) { T x; alias x
this; }` as `T` if `T` is a built-in type, by having
`AbcTypeOf!(S(T))` yield `T`, if `T` is `Abc` (e.g. Boolean,
FloatingPoint, etc.) in template constraints.
In other words, it looks like they were meant only for
Phobos-internal use. These days, we use `package (std)` for such
symbols. Perhaps that `package` protection attributes were not
implemented (or not working reliably) in ~2012?
There is no discussion in that pull request, so perhaps you had
discussed the matter with Kenji either on the newsgroup,
Bugzilla, in other pull request, or privately?
[0]: https://github.com/dlang/phobos/pull/488
More information about the Digitalmars-d
mailing list