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

            Bug ID: 98440
           Summary: Accepts ill-formed reinterpret_cast<int&&>(1)
           Product: gcc
           Version: 10.2.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: aschepler at gmail dot com
  Target Milestone: ---

g++ does not give any error or warning for a reinterpret_cast when the target
type is an rvalue reference type and the expression operand is a prvalue, for
example reinterpret_cast<int&&>(1).

In standard section [expr.reinterpret.cast], casts to reference types are
described only by paragraph 11, which allows casting a glvalue to a reference
type, but specifically says "No temporary is created". So the temporary
materialization conversion can't be implicitly used like in most expressions,
and the paragraph can't apply.

Clang++, MSVC, and ICC all produce error messages for the expression
reinterpret_cast<int&&>(1).

Reply via email to