xref: /llvm-project/libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.verify.cpp (revision e6388fea3e194b8eabb42f7e26a45f51b7e475d3)
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 
18 struct incomplete;
19 
20 void f() {
21   {
22     std::allocator<int> a;
23     a.allocate(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(3); // expected-error@*:* {{invalid application of 'sizeof' to an incomplete type 'incomplete'}}
34   }
35 }
36