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

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

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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.  Interesting only MSVC provides the reason:

<source>(15): error C2131: expression did not evaluate to a constant
<source>(11): note: failure was caused by call of undefined function or one not
declared 'constexpr'
<source>(11): note: see usage of 'foo<int>::~foo'


clang does not either:
<source>:15:16: error: static_assert expression is not an integral constant
expression
static_assert( check<foo<int>>() );
               ^~~~~~~~~~~~~~~~~
<source>:11:5: note: non-literal type 'foo<int>' cannot be used in a constant
expression
  T t;
    ^
<source>:15:16: note: in call to 'check()'
static_assert( check<foo<int>>() );
               ^

Nor EDG (ICC):
<source>(15): error: expression must have a constant value
  static_assert( check<foo<int>>() );
                 ^
<source>(15): note: cannot call non-constexpr function "check<T>() [with
T=foo<int>]" (declared at line 9)
  static_assert( check<foo<int>>() );
                 ^

Reply via email to