Есть ли шаблон или подход, который можно было бы использовать, чтобы различать объявления 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
. - person πάντα ῥεῖ   schedule 05.11.2018bar
в объявлении, а затем используется какbaar
? - person Blaze   schedule 05.11.2018int
,signed
,signed int
,int signed
. Все они одного типа. Те, которые опускаютint
,int
неявно. Те, которые опускаютsigned
,signed
неявно. Порядок не имеет значения. - person Eljay   schedule 05.11.2018char
весьма своеобразно: это зависит от реализации, является лиchar
подписанным или неподписанным, но это отдельный тип отsigned char
иunsigned char
. Для других целочисленных типовsigned T
является тем же типом, что иT
. - person Pete Becker   schedule 05.11.2018unsigned int
, он записывается какuint32
protobuf, если я используюsigned int
или простоint
- он записывается какsint32
, и у меня еще нет средств C ++, чтобы указатьint32
- person hutorny   schedule 07.11.2018signed
, прикрепленное к объявлению C ++ (кромеchar
), не имеет большего значения, чем окружающие его пробелы. Вы не можете обнаружить ни в шаблоне, ни в каком-либо другом виде метапрограммирования. - person n. 1.8e9-where's-my-share m.   schedule 07.11.2018