Ответ 1
Они не одного типа, но оператор typeid
разбивает const
и volatile
.
Из раздела 5.2.8 [expr.typeid]
:
CV-квалификаторы верхнего уровня выражения glvalue или идентификатор типа, который является операндом
typeid
, всегда игнорируются.
if(typeid(int) == typeid(const int))
cout << "Same types"<< endl;
ПРОГРАММНЫЙ ВЫХОД:
Те же типы
Мне что-то не хватает? это не те же самые типы lol.
Они не одного типа, но оператор typeid
разбивает const
и volatile
.
Из раздела 5.2.8 [expr.typeid]
:
CV-квалификаторы верхнего уровня выражения glvalue или идентификатор типа, который является операндом
typeid
, всегда игнорируются.
Вероятно, вы захотите этого:
#include <type_traits>
if (std::is_same<int, const int>::value)
std::cout << "same types\n";
else
std::cout << "different types\n";