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

            Bug ID: 92411
           Summary: conformance issue with reinterpret_cast in constant
                    expressions
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: Darrell.Wright at gmail dot com
  Target Milestone: ---

It looks like there is a regression in trunk(20171107 on CE) that allows
reinterpret_casts in constant expressions.
https://gcc.godbolt.org/z/m7Qytn


using size_t = decltype(sizeof(int));

constexpr char const * func( char const * ptr ) {
    return reinterpret_cast<char const *>( ptr );
}

static_assert( func( nullptr ) == nullptr );

template<size_t N>
constexpr char const * func2( char const (&s)[N] ) {
    return reinterpret_cast<char const *>( s );
}

static_assert( *func2( "Hello" ) == 'H' );

I think this should be ill formed with a diag according to the following links,
but it is allowed 
https://eel.is/c++draft/expr.const#4.15
https://eel.is/c++draft/dcl.pre#6

Reply via email to