【发布时间】:2018-11-05 18:35:38
【问题描述】:
是否有模板或方法可以用来区分声明 signed int 和 int,如下例所示
signed int foo;
int bar;
static_assert(magic_signed<decltype(foo)>::value,"signed"); //PASS
static_assert(magic_signed<decltype(bar)>::value,"not signed"); //ASSERT
【问题讨论】:
-
int默认为signed。 -
是否有意在声明中将其称为
bar,然后用作baar? -
@Blaze - 感谢指点,已修复
-
我的信念是不可能的。编译后,你无法区分“int”和“signed int”,它们是一样的。
-
在这方面,
char很奇特:char是有符号还是无符号由实现定义,但它与signed char和unsigned char是不同的类型。对于其他整数类型,signed T与T的类型相同。
标签: c++ templates typetraits signed