为什么静态断言在这种情况下会发生火灾?由于64位地址线和char是单字节,它们是否在同一地址?
#include <type_traits>
int main()
{
char a='a';
char b='b';
static_assert ( &a == &b, " ERROR: Same addr" ) ;
}
main.cpp: In function ‘int main()’:
main.cpp:9:3: error: static assertion failed: ERROR: Same addr
答案 0 :(得分:6)
你有倒退的逻辑。条件为static_assert
时触发false
,即两个对象的地址不同。
答案 1 :(得分:3)
a
和b
位于不同的地址。你有断言的错误方法。您的断言失败,因为两个地址不它们相同。尝试
static_assert ( &a != &b, " ERROR: Same addr" ) ;