long
и int
- это разные фундаментальные типы.Даже если они одного размера, они не одного типа, поэтому is_same_v
никогда не будет true
.Если хотите, вы можете проверить, что их размеры одинаковы, затем перейдите к
static_assert(sizeof(foo) == sizeof(bar));
. Вы даже можете убедиться, что foo
и bar
являются целочисленными типами, такими как
static_assert(sizeof(foo) == sizeof(bar) &&
std::is_integral_v<decltype(foo)> &&
std::is_integral_v<decltype(bar)>);
Вытакже можно убедиться, что они имеют ту же подпись, что и
static_assert(sizeof(foo) == sizeof(bar) &&
std::is_integral_v<decltype(foo)> &&
std::is_integral_v<decltype(bar)> &&
std::is_signed_v<decltype(foo)> == std::is_signed_v<decltype(bar)>);