https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101828

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-08-09
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
With -pedantic-errors -std=c++17, we do reject it:
<source>:2:19: error: member 'fun' can be declared both 'virtual' and
'constexpr' only in '-std=c++20' or '-std=gnu++20' [-Wc++20-extensions]
    2 |     constexpr int virtual fun() const{
      |     ~~~~~~~~~     ^~~~~~~


With -pedantic-errors -std=c++20 we don't reject this even though we should,
clang gives:
Output of x86-64 clang (trunk) (Compiler #2)
<source>:8:15: error: constexpr variable 'v' must be initialized by a constant
expression
constexpr int v = rf.fun();
              ^   ~~~~~~~~
<source>:8:22: note: virtual function called on object 'obj' whose dynamic type
is not constant
constexpr int v = rf.fun();
                     ^

Reply via email to