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

            Bug ID: 71093
           Summary: use of pseudo-destructor accepted in constant
                    expression
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

Among the list of expressions that are not core constant expressions and thus
are not usable in constexpr contexts is the call to a pseudo-destructor such as
in the following (invalid) test case.  The test case is silently accepted by
all versions of GCC when it should be rejected.

$ cat xx.cpp && gcc -S -Wall -Wextra -Wpedantic -o/dev/null xx.cpp
constexpr int f (const int *p)
{
  typedef int T;
  p->~T ();
  return *p;
}

constexpr int i = 0;
constexpr int j = f (&i);

Reply via email to