[Bug libstdc++/72793] New: pointer_traits is too strict about rebinding

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Aug 3 14:52:00 GMT 2016


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

            Bug ID: 72793
           Summary: pointer_traits is too strict about rebinding
           Product: gcc
           Version: 6.1.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>

template<typename T, int = 0>
struct Ptr {
  using element_type = T;
};

std::pointer_traits<Ptr<int>>::element_type e;


/home/jwakely/gcc/7/include/c++/7.0.0/bits/ptr_traits.h: In instantiation of
‘struct std::pointer_traits<Ptr<int> >’:
alloc.cc:8:30:   required from here
/home/jwakely/gcc/7/include/c++/7.0.0/bits/ptr_traits.h:113:7: error: static
assertion failed: pointer type defines rebind<U> or is like SomePointer<T,
Args>
       static_assert(!is_same<rebind<element_type>, __undefined>::value,
       ^~~~~~~~~~~~~

The standard says that the instantiation of pointer_traits<Ptr<T, int>>::rebind
should be ill-formed, but the assertion fires even when it isn't instantiated.


More information about the Gcc-bugs mailing list