1*7ea5409eSLouis Dionne //===----------------------------------------------------------------------===//
2*7ea5409eSLouis Dionne //
3*7ea5409eSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*7ea5409eSLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
5*7ea5409eSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*7ea5409eSLouis Dionne //
7*7ea5409eSLouis Dionne //===----------------------------------------------------------------------===//
8*7ea5409eSLouis Dionne 
9*7ea5409eSLouis Dionne // <memory>
10*7ea5409eSLouis Dionne 
11*7ea5409eSLouis Dionne // unique_ptr
12*7ea5409eSLouis Dionne 
13*7ea5409eSLouis Dionne // test op*()
14*7ea5409eSLouis Dionne 
15*7ea5409eSLouis Dionne #include <memory>
16*7ea5409eSLouis Dionne #include <cassert>
17*7ea5409eSLouis Dionne 
main(int,char **)18*7ea5409eSLouis Dionne int main(int, char**) {
19*7ea5409eSLouis Dionne   std::unique_ptr<int[]> p(new int(3));
20*7ea5409eSLouis Dionne   const std::unique_ptr<int[]>& cp = p;
21*7ea5409eSLouis Dionne   TEST_IGNORE_NODISCARD(*p);  // expected-error-re {{indirection requires pointer operand ('std::unique_ptr<int{{[ ]*}}[]>' invalid)}}
22*7ea5409eSLouis Dionne   TEST_IGNORE_NODISCARD(*cp); // expected-error-re {{indirection requires pointer operand ('const std::unique_ptr<int{{[ ]*}}[]>' invalid)}}
23*7ea5409eSLouis Dionne 
24*7ea5409eSLouis Dionne   return 0;
25*7ea5409eSLouis Dionne }
26