//===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // unique_ptr // test op[](size_t) #include #include #include "test_macros.h" class A { int state_; static int next_; public: A() : state_(++next_) {} int get() const { return state_; } friend bool operator==(const A& x, int y) { return x.state_ == y; } A& operator=(int i) { state_ = i; return *this; } }; int A::next_ = 0; int main(int, char**) { std::unique_ptr p(new A[3]); assert(p[0] == 1); assert(p[1] == 2); assert(p[2] == 3); p[0] = 3; p[1] = 2; p[2] = 1; assert(p[0] == 3); assert(p[1] == 2); assert(p[2] == 1); return 0; }