Подтвердить что ты не робот

Почему typeid возвращает, что int и const int являются одинаковыми типами

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

ПРОГРАММНЫЙ ВЫХОД:

Те же типы

Мне что-то не хватает? это не те же самые типы lol.

4b9b3361

Ответ 1

Они не одного типа, но оператор typeid разбивает const и volatile.

Из раздела 5.2.8 [expr.typeid]:

CV-квалификаторы верхнего уровня выражения glvalue или идентификатор типа, который является операндом typeid, всегда игнорируются.

Ответ 2

Вероятно, вы захотите этого:

#include <type_traits>

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