有没有一个模板或方法可以用来区分声明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
尽管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
,所以它们实际上是完全相同的东西。
看看这个。int和已签名的int声明之间的差异
int
、signed int
和signed
属于同一类型。
CCD_ 16和CCD_。