This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/72792] New: allocator_traits is too strict about rebinding


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

            Bug ID: 72792
           Summary: allocator_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 Alloc {
  using value_type = T;

  T* allocate(std::size_t n) { throw std::bad_alloc(); }
  void deallocate(T*, std::size_t n) { }
};

std::allocator_traits<Alloc<int>>::pointer p;


/home/jwakely/gcc/7/include/c++/7.0.0/bits/alloc_traits.h: In instantiation of
‘struct std::allocator_traits<Alloc<int> >’:
alloc.cc:11:34:   required from here
/home/jwakely/gcc/7/include/c++/7.0.0/bits/alloc_traits.h:187:7: error: static
assertion failed: allocator defines rebind or is like Alloc<T, Args>
       static_assert(!is_same<rebind_alloc<value_type>, __undefined>::value,
       ^~~~~~~~~~~~~

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]