-2

为什么在这种情况下静态断言会触发?由于 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
4

2 回答 2

6

你把逻辑倒过来了。static_assert条件为 时触发false,即两个对象的地址不同。

于 2013-09-10T18:56:42.110 回答
3

a并且b在不同的地址。你有你的断言错误的方式。您的断言失败,因为这两个地址相同。尝试

static_assert ( &a != &b, " ERROR: Same addr"  ) ;
于 2013-09-10T18:57:14.613 回答