https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107528
Bug ID: 107528 Summary: constexpr evaluator doesn't check for deallocate of mismatched size Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vanyacpp at gmail dot com Target Milestone: --- This functions causes undefined behavior and should not be evaluated at compile-time. The problem is the second argument of `deallocate` function (number of objects to deallocate). It must be equal to the number of objects that were allocated. #include <memory> constexpr int foo() { std::allocator<int> alloc; int* p = alloc.allocate(1); alloc.deallocate(p, 3); return 42; } static_assert(foo() == 42);