65 gdb::optional<long> o { i };
67 VERIFY( *o == 0x1234ABCD );
73 gdb::optional<long> o = i;
75 VERIFY( *o == 0x1234ABCD );
81 gdb::optional<long> o = { i };
83 VERIFY( *o == 0x1234ABCD );
89 gdb::optional<long> o { std::move(i) };
91 VERIFY( *o == 0x1234ABCD );
97 gdb::optional<long> o = std::move(i);
99 VERIFY( *o == 0x1234ABCD );
100 VERIFY( i == 0x1234ABCD );
105 gdb::optional<long> o = { std::move(i) };
107 VERIFY( *o == 0x1234ABCD );
108 VERIFY( i == 0x1234ABCD );
113 std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
114 gdb::optional<std::vector<int>> o { v };
121 std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
122 gdb::optional<std::vector<int>> o = v;
128 std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
129 gdb::optional<std::vector<int>> o { v };
135 std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
136 gdb::optional<std::vector<int>> o { std::move(v) };
142 std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
143 gdb::optional<std::vector<int>> o = std::move(v);
149 std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
150 gdb::optional<std::vector<int>> o { std::move(v) };
157 gdb::optional<tracker> o = t;
158 VERIFY( o->value == 333 );
165 gdb::optional<tracker> o = std::move(t);
166 VERIFY( o->value == 333 );
171 enum outcome { nothrow, caught, bad_catch };
174 outcome result = nothrow;
179 gdb::optional<throwing_construction> o { t };
184 { result = bad_catch; }
186 VERIFY( result == nothrow );
190 outcome result = nothrow;
195 gdb::optional<throwing_construction> o { t };
200 { result = bad_catch; }
202 VERIFY( result == caught );
206 outcome result = nothrow;
211 gdb::optional<throwing_construction> o { std::move(t) };
216 { result = bad_catch; }
218 VERIFY( result == nothrow );
222 outcome result = nothrow;
227 gdb::optional<throwing_construction> o { std::move(t) };
232 { result = bad_catch; }
234 VERIFY( result == caught );
239 gdb::optional<std::string> os =
"foo";
244 X& operator=(
int) {
return *
this;}
247 gdb::optional<X> ox{42};
249 gdb::optional<int> oi{42};
251 gdb::optional<X> ox2{oi};
253 gdb::optional<std::string> os2;
256 gdb::optional<X> ox3;
258 gdb::optional<X> ox4;
265 gdb::optional<int> oi = gdb::optional<short>();
267 gdb::optional<std::string> os = gdb::optional<const char*>();
270 gdb::optional<gdb::optional<int>> ooi = gdb::optional<int>();
272 ooi = gdb::optional<int>();
274 ooi = gdb::optional<int>(42);
278 gdb::optional<gdb::optional<int>> ooi2 = gdb::optional<short>();
280 ooi2 = gdb::optional<short>();
282 ooi2 = gdb::optional<short>(6);
285 gdb::optional<gdb::optional<int>> ooi3 = gdb::optional<int>(42);
288 gdb::optional<gdb::optional<int>> ooi4 = gdb::optional<short>(6);