سؤال

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

PROGRAM OUTPUT:

Same types

am I missing something? these are not same types lol.

هل كانت مفيدة؟

المحلول

They aren't the same type, but the typeid operator strips const and volatile.

From section 5.2.8 [expr.typeid]:

The top-level cv-qualifiers of the glvalue expression or the type-id that is the operand of typeid are always ignored.

نصائح أخرى

You probably want this instead:

#include <type_traits>

if (std::is_same<int, const int>::value)
    std::cout << "same types\n";
else
    std::cout << "different types\n";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top