gpt4 book ai didi

c++ - 为什么 std::is_same 需要双括号

转载 作者:行者123 更新时间:2023-11-27 22:51:56 26 4
gpt4 key购买 nike

<分区>

我试图使用 std::is_same 来验证强类型枚举的底层类型,我注意到一个奇怪的情况,我需要使用双括号,但我不明白为什么.我已将示例简化为如下:

#include <type_traits>
#include <cassert>
#include <stdint.h>

int main(int argc, char *argv[])
{
assert((std::is_same<unsigned int,uint32_t>::value == true)); // OK
assert((std::is_same<unsigned int,uint32_t>::value) == true); // OK
//assert(std::is_same<unsigned int,uint32_t>::value == true); // Compile error
static_assert(std::is_same<unsigned int,uint32_t>::value == true, "BAD"); // OK
return 0;
}

编译错误:

isSameAssert.cpp:9:62: error: macro "assert" passed 2 arguments, but takes just 1
assert(std::is_same<unsigned int,uint32_t>::value == true); // Compile error
^
isSameAssert.cpp: In function ‘int main(int, char**)’:
isSameAssert.cpp:9:5: error: ‘assert’ was not declared in this scope
assert(std::is_same<unsigned int,uint32_t>::value == true); // Compile error
^
make: *** [build/isSameAssert] Error 1

任何人都可以解释一下或指出相关的引用资料吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com