gpt4 book ai didi

c++ - 可以比较 std::type_info 上的指针是否在常量表达式中相等?

转载 作者:行者123 更新时间:2023-12-04 11:25:26 27 4
gpt4 key购买 nike

可以定义一个 constexpr std::type_info 上的指针任何类的对象 T .该语言是否允许在编译时比较此类指针的相等性?
例如:

#include <typeinfo>

template <typename T>
inline constexpr auto * pType = &typeid(T);

int main() {
static_assert( pType<int> == pType<int> );
static_assert( pType<int> != pType<char> );
}
问题来了,既然 Clang 接受了,但是 GCC 返回错误:
error: non-constant condition for static assertion
8 | static_assert( pType<int> != pType<char> );
| ~~~~~~~~~~~^~~~~~~~~~~~~~
<source>:8:31: error: '(((const std::type_info*)(& _ZTIi)) != ((const std::type_info*)(& _ZTIc)))' is not a constant expression
演示: https://gcc.godbolt.org/z/9broYrEn7

最佳答案

这是一个 GCC 错误:85428
顺便说一句,pType<int> == pType<int> is not always guaranteed .

关于c++ - 可以比较 std::type_info 上的指针是否在常量表达式中相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69341853/

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