index.fail.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//===----------------------------------------------------------------------===//
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ��������������������The LLVM Compiler Infrastructure
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// This file is distributed under the University of Illinois Open Source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// License. See LICENSE.TXT for details.
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//===----------------------------------------------------------------------===//
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// <memory>
11c4e10b884294e4622e2470235489809a7bd73a1epbos@webrtc.org
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// unique_ptr
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// test op[](size_t)
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <memory>
17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <cassert>
18b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org
19b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.orgclass A
20b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org{
21b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    int state_;
22b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    static int next_;
23b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.orgpublic:
24b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    A() : state_(++next_) {}
25b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    int get() const {return state_;}
26b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org
27b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    friend bool operator==(const A& x, int y)
28b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org        {return x.state_ == y;}
29b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org
30b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    A& operator=(int i) {state_ = i; return *this;}
31b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org};
32b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org
33b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.orgint A::next_ = 0;
34b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org
35b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.orgint main()
36b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org{
37b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    std::unique_ptr<A> p(new A[3]);
38b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    assert(p[0] == 1);
39b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    assert(p[1] == 2);
40b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    assert(p[2] == 3);
41b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    p[0] = 3;
42b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    p[1] = 2;
43b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    p[2] = 1;
44b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    assert(p[0] == 3);
45b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    assert(p[1] == 2);
46b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org    assert(p[2] == 1);
47b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org}
48b576a696e444c2873191463dcf03de1a82a50dd4mikhal@webrtc.org