Pattern matching is-expressions
Stefan Koch
uplink.coder at googlemail.com
Wed Aug 19 13:14:22 UTC 2020
On Wednesday, 19 August 2020 at 13:03:59 UTC, Dennis wrote:
Also they are not
> complete (there is trait for checking if something is an enum),
The expression is(T == enum) works, and does detect if something
has an enum type.
Are you talking about detecting a manifest constant?
> (I know there's a Pull Request in dmd for adding
> `__traits(isDynamicArray)`)
Indeed and it shows a 16% performance improvement over using the
isDynamicArray template in phobos. (Since it doesn't have to
match anything, it just returns a part of the compiler internal
data)
But even if that weren't the case I find it much more intuitive
than pattern matching is expressions.
> The advantage of traits is that they can be more future proof
> however. `isIntegral` would still work unlike `is(T : long)`
> even if `cent` and `ucent` types are added, or even if (ulong :
> long) implicit conversion gets deprecated.
True I hadn't even considered that aspect yet.
> I wish the redundant traits (isAssociativeArray, isStaticArray)
> weren't there since they are completely covered by is
> expressions though.
The is expressions are more expensive, because of the matching
part.
More information about the Digitalmars-d
mailing list