1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9// UNSUPPORTED: c++03, c++11, c++14, c++17
10
11// <memory>
12
13// allocator:
14// T* allocate(size_t n);
15
16#include <memory>
17
18struct incomplete;
19
20void f() {
21 {
22 std::allocator<int> a;
23 a.allocate(n: 3); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
24 }
25 {
26 std::allocator<void> a;
27 [[maybe_unused]] auto b =
28 a.allocate(3); // expected-error@*:* {{invalid application of 'sizeof' to an incomplete type 'void'}}
29 }
30 {
31 std::allocator<incomplete> a;
32 [[maybe_unused]] auto b =
33 a.allocate(n: 3); // expected-error@*:* {{invalid application of 'sizeof' to an incomplete type 'incomplete'}}
34 }
35}
36

source code of libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.verify.cpp