Почему typeid возвращает, что int и const int являются одинаковыми типами if(typeid(int) == typeid(const int)) cout << "Same types"<< endl; ПРОГРАММНЫЙ ВЫХОД: Те же типы Мне что-то не хватает? это не те же самые типы lol. Ответ 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";
Ответ 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";