Compile time sequences
Paul Backus
snarwin at gmail.com
Wed Oct 3 17:22:58 UTC 2018
On Wednesday, 3 October 2018 at 07:57:07 UTC, drug wrote:
> According to https://dlang.org/articles/ctarguments.html
> compile time sequences "...allow a programmer to operate on
> types, symbols and values..."
> Phobos has `isType`/`isTypeTuple` traits, also `isExpressions`
> where expression may contain both values and symbols, but has
> no traits like `isSymbol` and `isValue`. I handle this by
> taking an address - values has no address, so I can distinct
> types, symbols and values, but it's not convenient/consistent
> way. I think it worths to add such traits, but probably I
> missed something?
In my experience doing metaprogramming in D, it's best to make
your static if/template constraint tests as narrow and specific
as possible. For example, if you want to know whether you can
call a function with a particular argument, you don't need to
muck around with std.traits; you can just check whether the
function call compiles:
static if(__traits(compiles, f(arg))) {
// do something with f(arg)
}
So my question to you is: why do you care whether something is a
symbol or a value? Is there actually a more specific question
that you're trying to answer with that information? If so, just
ask the more specific question directly.
More information about the Digitalmars-d-learn
mailing list