Lines Matching defs:MoveOnly

218 struct MoveOnly {
223 explicit MoveOnly(int val) : val(val) {
225 MoveOnly(MoveOnly&& other) {
229 MoveOnly &operator=(MoveOnly&& other) {
234 ~MoveOnly() {
244 unsigned MoveOnly::MoveConstructions = 0;
245 unsigned MoveOnly::Destructions = 0;
246 unsigned MoveOnly::MoveAssignments = 0;
249 MoveOnly::ResetCounts();
250 Optional<MoveOnly> O;
251 EXPECT_EQ(0u, MoveOnly::MoveConstructions);
252 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
253 EXPECT_EQ(0u, MoveOnly::Destructions);
257 MoveOnly::ResetCounts();
258 Optional<MoveOnly> O(MoveOnly(3));
261 EXPECT_EQ(1u, MoveOnly::MoveConstructions);
262 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
263 EXPECT_EQ(1u, MoveOnly::Destructions);
267 Optional<MoveOnly> A(MoveOnly(3));
268 MoveOnly::ResetCounts();
269 Optional<MoveOnly> B(std::move(A));
273 EXPECT_EQ(1u, MoveOnly::MoveConstructions);
274 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
275 EXPECT_EQ(1u, MoveOnly::Destructions);
279 MoveOnly::ResetCounts();
280 Optional<MoveOnly> O;
281 O = MoveOnly(3);
284 EXPECT_EQ(1u, MoveOnly::MoveConstructions);
285 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
286 EXPECT_EQ(1u, MoveOnly::Destructions);
290 Optional<MoveOnly> A(MoveOnly(3));
291 Optional<MoveOnly> B;
292 MoveOnly::ResetCounts();
297 EXPECT_EQ(1u, MoveOnly::MoveConstructions);
298 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
299 EXPECT_EQ(1u, MoveOnly::Destructions);
303 Optional<MoveOnly> A;
304 Optional<MoveOnly> B(MoveOnly(3));
305 MoveOnly::ResetCounts();
309 EXPECT_EQ(0u, MoveOnly::MoveConstructions);
310 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
311 EXPECT_EQ(1u, MoveOnly::Destructions);
315 Optional<MoveOnly> A(MoveOnly(3));
316 Optional<MoveOnly> B(MoveOnly(4));
317 MoveOnly::ResetCounts();
322 EXPECT_EQ(0u, MoveOnly::MoveConstructions);
323 EXPECT_EQ(1u, MoveOnly::MoveAssignments);
324 EXPECT_EQ(1u, MoveOnly::Destructions);
362 Optional<MoveOnly> A;
364 MoveOnly::ResetCounts();
365 EXPECT_EQ(42, std::move(A).getValueOr(MoveOnly(42)).val);
366 EXPECT_EQ(1u, MoveOnly::MoveConstructions);
367 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
368 EXPECT_EQ(2u, MoveOnly::Destructions);
370 A = MoveOnly(5);
371 MoveOnly::ResetCounts();
372 EXPECT_EQ(5, std::move(A).getValueOr(MoveOnly(42)).val);
373 EXPECT_EQ(1u, MoveOnly::MoveConstructions);
374 EXPECT_EQ(0u, MoveOnly::MoveAssignments);
375 EXPECT_EQ(2u, MoveOnly::Destructions);