是否有一个模板或方法可用于区分声明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
答案 0 :(得分:5)
尽管signed int
和int
是相同的,但我认为您可能想说的是如何区分unsigned int
和int
。看一下std::is_signed
。在c ++ 11之后可用。
https://en.cppreference.com/w/cpp/types/is_signed
还有一个std::is_unsigned
https://en.cppreference.com/w/cpp/types/is_unsigned
如果您实际上是要区分signed int
和普通int
,我认为您不能这样做,因为int
被隐式理解为signed int
。编译器,所以它们实际上是完全一样的。
答案 1 :(得分:3)
int
,signed int
和signed
是同一类型。
unsigned int
和unsigned
是同一类型。