Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp2a/constexpr-virtual14.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
// PR c++/92695 // { dg-do compile { target c++2a } } struct A { virtual int get () = 0; virtual int set (A *o) = 0; }; struct B : A { constexpr int get () override { return 10; } constexpr int set (A *o) override { a = o; return 20; } A *a {}; }; constexpr auto addressof = [] (A &n) { return &n; }; struct C { B b; A *c { addressof (b) }; constexpr int add () { return c->set (addressof (b)); } }; struct D { B b[2]; A *c { addressof (b[0]) }; constexpr int add () { return c->set (addressof (b[0])); } }; template <typename T> constexpr int get () { T f; return f.add (); } static_assert (get<C> () == 20); static_assert (get<D> () == 20);