
While the std::allocator<void> specialization was deprecated by https://wg21.link/p0174#2.2, the *use* of std::allocator<void> by users was not. The intent was that std::allocator<void> could still be used in C++17 and C++20, but starting with C++20 (with the removal of the specialization), std::allocator<void> would use the primary template. That intent was called out in wg21.link/p0619r4#3.9. As a result of this patch, _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS will also not control whether the explicit specialization is provided or not. It shouldn't matter, since in C++20, one can simply use the primary template. Fixes http://llvm.org/PR50299 Differential Revision: https://reviews.llvm.org/D104323
21 lines
738 B
C++
21 lines
738 B
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// <memory>
|
|
|
|
// Make sure we can use std::allocator<void> in all Standard modes. While the
|
|
// explicit specialization for std::allocator<void> was deprecated, using that
|
|
// specialization was neither deprecated nor removed (in C++20 it should simply
|
|
// start using the primary template).
|
|
//
|
|
// See https://llvm.org/PR50299.
|
|
|
|
#include <memory>
|
|
|
|
std::allocator<void> a;
|