为什么typeid返回int和const int是相同的类型

时间:2012-01-17 02:28:22

标签: c++ typeid

if(typeid(int) == typeid(const int))
       cout << "Same types"<< endl;

计划输出:

  

相同类型

我错过了什么吗? 这些不是同一类型lol。

2 个答案:

答案 0 :(得分:14)

它们的类型不同,但typeid运算符剥离了constvolatile

从第5.2.8节[expr.typeid]

开始
  

glvalue表达式的顶级 cv-qualifiers 或作为typeid的操作数的 type-id 始终被忽略。

答案 1 :(得分:3)

你可能想要这个:

#include <type_traits>

if (std::is_same<int, const int>::value)
    std::cout << "same types\n";
else
    std::cout << "different types\n";