blob: 6fb67b43f177bf970af6099dfa1f05293c289692 [file] [log] [blame]
// { dg-options "-std=gnu++23 -frtti" }
// { dg-do compile { target c++23 } }
// { dg-additional-options "-fdelete-null-pointer-checks" }
#include <typeinfo>
#ifndef __cpp_lib_constexpr_typeinfo
# error "Feature-test macro for constexpr typeinfo missing in <typeinfo>"
#elif __cpp_lib_constexpr_typeinfo != 202106L
# error "Feature-test macro for constexpr typeinfo has wrong value in <typeinfo>"
#endif
struct X { };
constexpr bool
test01()
{
if (typeid(int) == typeid(long))
return false;
if (typeid(int) != typeid(int))
return false;
struct X { virtual ~X() { } };
if (typeid(X) != typeid(X))
return false;
if (typeid(X) == typeid(::X))
return false;
if (typeid(X) == typeid(int))
return false;
const auto& ti_x = typeid(X);
if (ti_x != ti_x)
return false;
if (ti_x != typeid(X))
return false;
struct Y { };
if (ti_x == typeid(Y))
return false;
return true;
}
static_assert( test01() );