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