view gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic15.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line source

// PR c++/88337 - Implement P1327R1: Allow dynamic_cast/typeid in constexpr.
// { dg-do compile { target c++2a } }
// Test HINT = -3 (SRC is a multiple public non-virtual base of DST).

struct A { virtual void a() {} };
struct C : A { };
struct D : A { };
struct B : C, D { };

constexpr B b;
static_assert (&dynamic_cast<B&>((A&)(C&)b) == &b);
static_assert (&dynamic_cast<B&>((A&)(D&)b) == &b);
static_assert (dynamic_cast<B*>((A*)(C*)&b) == &b);
static_assert (dynamic_cast<B*>((A*)(D*)&b) == &b);