if(typeid(int) == typeid(const int))
cout << "Same types"<< endl;
节目输出:
相同类型
我错过了什么吗?这些不是相同的类型,哈哈。
它们不是同一类型,但typeid
运算符剥离const
和volatile
.
从第 5.2.8 节开始[expr.typeid]
:
泛左值表达式的顶级cv 限定符或作为操作数的type-id
typeid
始终被忽略。
你可能想要这个:
#include <type_traits>
if (std::is_same<int, const int>::value)
std::cout << "same types\n";
else
std::cout << "different types\n";