Skip to content

Commit 14c265b

Browse files
committed
BUG: Use std::forward instead of std::move on forwarding references
Warns if std::move is applied to a forwarding reference (a T&& parameter where T is a deduced template type). In such cases std::forward should be used instead, to preserve the value category of the argument.
1 parent fd77022 commit 14c265b

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

Modules/Core/Common/test/itkArray2DGTest.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ TEST(Array2D, MoveConstruct)
7070
const auto * const * const originalDataArray{ original.data_array() };
7171
const unsigned int originalSize{ original.size() };
7272

73-
const auto moveConstructed = std::move(original);
73+
const auto moveConstructed = std::forward<decltype(original)>(original);
7474

7575
// After the "move", the move-constructed object has retrieved the original data.
7676
EXPECT_EQ(moveConstructed.data_array(), originalDataArray);

Modules/Core/Common/test/itkRangeGTestUtilities.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class RangeGTestUtilities
9494
ExpectMoveConstructedRangeHasSameIteratorsAsOriginalBeforeMove(TRange && originalRange)
9595
{
9696
const TRange originalRangeBeforeMove = originalRange;
97-
TRange moveConstructedRange(std::move(originalRange));
97+
TRange moveConstructedRange(std::forward<TRange>(originalRange));
9898

9999
ExpectRangesHaveEqualBeginAndEnd(moveConstructedRange, originalRangeBeforeMove);
100100
}
@@ -107,7 +107,7 @@ class RangeGTestUtilities
107107
const TRange originalRangeBeforeMove = originalRange;
108108

109109
TRange moveAssignedRange;
110-
moveAssignedRange = std::move(originalRange);
110+
moveAssignedRange = std::forward<TRange>(originalRange);
111111

112112
ExpectRangesHaveEqualBeginAndEnd(moveAssignedRange, originalRangeBeforeMove);
113113
}

0 commit comments

Comments
 (0)