How does __traits and std.traits differ?
Jacob Carlborg via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jul 24 00:39:42 PDT 2015
On 2015-07-24 09:16, WhatMeWorry wrote:
>
> Looking at the online documentation, it says:
>
> __traits "are extensions to the language to enable programs, at compile
> time, to get at information internal to the compiler."
>
> std.traits are "Templates which extract information about types and
> symbols at compile time.
>
> Do they both basically do the same thing? They both have isIntegral,
> but there is a lot of functionality that they don't share.
>
> I guess one naive question would be, why not just have all the __traits
> functionality rolled into std.traits? Or vice versa?
A couple of reasons:
* std.traits existed before __traits
* In some cases std.traits might provide a more user friendly interface
than __traits. I think that __traits is not intended to be used directly
by users. Rather it should server as a building block for a library
implementation. That's why it has double underscore prefix.
* It's not possible to implement everything that __traits does in a
library solution, i.e. std.traits
--
/Jacob Carlborg
More information about the Digitalmars-d-learn
mailing list