我想要检查,如果类型是byte/short/int/long或它是ubyte/ushort/uint/ulong.第一个想法是使用建筑is(T1:T2),但是is(ulong:long)==is(long:ulong)==true,它不是那样的.
现在我正在使用类似的东西is(T:long) && (cast(T)(-1)<cast(T)(1)),但这段代码对我来说似乎很难看.
那么true只有当类型是无符号时才会返回更优雅的逻辑语句吗?
Chr*_*ain 10
有一个模板可以满足std.traits您的需求:http:
//dlang.org/phobos/std_traits.html#.isUnsigned
使用它像:
if(isUnsigned!T1) {
//...
}
Run Code Online (Sandbox Code Playgroud)