[Bug libstdc++/79467] New: [7 Regression] incorrect static assertion in shared_ptr

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Feb 11 20:10:00 GMT 2017


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

            Bug ID: 79467
           Summary: [7 Regression] incorrect static assertion in
                    shared_ptr
           Product: gcc
           Version: 7.0.1
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

#include <memory>

struct X { };

struct D {
  void operator()(X*&) {}
};
std::shared_ptr<X> p(new X(), D());

Fails on trunk with:

/home/jwakely/gcc/7/include/c++/7.0.1/bits/shared_ptr_base.h:1088:4: error:
static assertion failed: deleter expression d(p) is well-formed
    static_assert(__is_callable<_Deleter(_Yp*)>::value,


The __is_callable expression should be using lvalues not rvalues.


More information about the Gcc-bugs mailing list