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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-06-14

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Testcase:

#include <memory>

constexpr auto f()
{
  std::allocator<long long> a;
  auto n = std::size_t(-1) / (sizeof(long long) - 1);
  auto p = a.allocate(n);
  a.deallocate(p, n);
  return n;
}
static_assert( f() );


In practice if the arithmetic wraps around and a smaller buffer is allocated,
any attempt to write beyond the allocated size would be detected in constant
evaluation anyway. So you'd still get a compilation error in most cases.

Reply via email to