@@ -908,63 +908,69 @@ TEST(SmallVectorTest, EmplaceBack) {
908
908
EmplaceableArg<3 > A3 (true );
909
909
{
910
910
SmallVector<Emplaceable, 3 > V;
911
- V.emplace_back ();
911
+ Emplaceable &back = V.emplace_back ();
912
+ EXPECT_TRUE (&back == &V.back ());
912
913
EXPECT_TRUE (V.size () == 1 );
913
- EXPECT_TRUE (V. back () .State == ES_Emplaced);
914
- EXPECT_TRUE (V. back () .A0 .State == EAS_Defaulted);
915
- EXPECT_TRUE (V. back () .A1 .State == EAS_Defaulted);
916
- EXPECT_TRUE (V. back () .A2 .State == EAS_Defaulted);
917
- EXPECT_TRUE (V. back () .A3 .State == EAS_Defaulted);
914
+ EXPECT_TRUE (back.State == ES_Emplaced);
915
+ EXPECT_TRUE (back.A0 .State == EAS_Defaulted);
916
+ EXPECT_TRUE (back.A1 .State == EAS_Defaulted);
917
+ EXPECT_TRUE (back.A2 .State == EAS_Defaulted);
918
+ EXPECT_TRUE (back.A3 .State == EAS_Defaulted);
918
919
}
919
920
{
920
921
SmallVector<Emplaceable, 3 > V;
921
- V.emplace_back (std::move (A0));
922
+ Emplaceable &back = V.emplace_back (std::move (A0));
923
+ EXPECT_TRUE (&back == &V.back ());
922
924
EXPECT_TRUE (V.size () == 1 );
923
- EXPECT_TRUE (V. back () .State == ES_Emplaced);
924
- EXPECT_TRUE (V. back () .A0 .State == EAS_RValue);
925
- EXPECT_TRUE (V. back () .A1 .State == EAS_Defaulted);
926
- EXPECT_TRUE (V. back () .A2 .State == EAS_Defaulted);
927
- EXPECT_TRUE (V. back () .A3 .State == EAS_Defaulted);
925
+ EXPECT_TRUE (back.State == ES_Emplaced);
926
+ EXPECT_TRUE (back.A0 .State == EAS_RValue);
927
+ EXPECT_TRUE (back.A1 .State == EAS_Defaulted);
928
+ EXPECT_TRUE (back.A2 .State == EAS_Defaulted);
929
+ EXPECT_TRUE (back.A3 .State == EAS_Defaulted);
928
930
}
929
931
{
930
932
SmallVector<Emplaceable, 3 > V;
931
- V.emplace_back (A0);
933
+ Emplaceable &back = V.emplace_back (A0);
934
+ EXPECT_TRUE (&back == &V.back ());
932
935
EXPECT_TRUE (V.size () == 1 );
933
- EXPECT_TRUE (V. back () .State == ES_Emplaced);
934
- EXPECT_TRUE (V. back () .A0 .State == EAS_LValue);
935
- EXPECT_TRUE (V. back () .A1 .State == EAS_Defaulted);
936
- EXPECT_TRUE (V. back () .A2 .State == EAS_Defaulted);
937
- EXPECT_TRUE (V. back () .A3 .State == EAS_Defaulted);
936
+ EXPECT_TRUE (back.State == ES_Emplaced);
937
+ EXPECT_TRUE (back.A0 .State == EAS_LValue);
938
+ EXPECT_TRUE (back.A1 .State == EAS_Defaulted);
939
+ EXPECT_TRUE (back.A2 .State == EAS_Defaulted);
940
+ EXPECT_TRUE (back.A3 .State == EAS_Defaulted);
938
941
}
939
942
{
940
943
SmallVector<Emplaceable, 3 > V;
941
- V.emplace_back (A0, A1);
944
+ Emplaceable &back = V.emplace_back (A0, A1);
945
+ EXPECT_TRUE (&back == &V.back ());
942
946
EXPECT_TRUE (V.size () == 1 );
943
- EXPECT_TRUE (V. back () .State == ES_Emplaced);
944
- EXPECT_TRUE (V. back () .A0 .State == EAS_LValue);
945
- EXPECT_TRUE (V. back () .A1 .State == EAS_LValue);
946
- EXPECT_TRUE (V. back () .A2 .State == EAS_Defaulted);
947
- EXPECT_TRUE (V. back () .A3 .State == EAS_Defaulted);
947
+ EXPECT_TRUE (back.State == ES_Emplaced);
948
+ EXPECT_TRUE (back.A0 .State == EAS_LValue);
949
+ EXPECT_TRUE (back.A1 .State == EAS_LValue);
950
+ EXPECT_TRUE (back.A2 .State == EAS_Defaulted);
951
+ EXPECT_TRUE (back.A3 .State == EAS_Defaulted);
948
952
}
949
953
{
950
954
SmallVector<Emplaceable, 3 > V;
951
- V.emplace_back (std::move (A0), std::move (A1));
955
+ Emplaceable &back = V.emplace_back (std::move (A0), std::move (A1));
956
+ EXPECT_TRUE (&back == &V.back ());
952
957
EXPECT_TRUE (V.size () == 1 );
953
- EXPECT_TRUE (V. back () .State == ES_Emplaced);
954
- EXPECT_TRUE (V. back () .A0 .State == EAS_RValue);
955
- EXPECT_TRUE (V. back () .A1 .State == EAS_RValue);
956
- EXPECT_TRUE (V. back () .A2 .State == EAS_Defaulted);
957
- EXPECT_TRUE (V. back () .A3 .State == EAS_Defaulted);
958
+ EXPECT_TRUE (back.State == ES_Emplaced);
959
+ EXPECT_TRUE (back.A0 .State == EAS_RValue);
960
+ EXPECT_TRUE (back.A1 .State == EAS_RValue);
961
+ EXPECT_TRUE (back.A2 .State == EAS_Defaulted);
962
+ EXPECT_TRUE (back.A3 .State == EAS_Defaulted);
958
963
}
959
964
{
960
965
SmallVector<Emplaceable, 3 > V;
961
- V.emplace_back (std::move (A0), A1, std::move (A2), A3);
966
+ Emplaceable &back = V.emplace_back (std::move (A0), A1, std::move (A2), A3);
967
+ EXPECT_TRUE (&back == &V.back ());
962
968
EXPECT_TRUE (V.size () == 1 );
963
- EXPECT_TRUE (V. back () .State == ES_Emplaced);
964
- EXPECT_TRUE (V. back () .A0 .State == EAS_RValue);
965
- EXPECT_TRUE (V. back () .A1 .State == EAS_LValue);
966
- EXPECT_TRUE (V. back () .A2 .State == EAS_RValue);
967
- EXPECT_TRUE (V. back () .A3 .State == EAS_LValue);
969
+ EXPECT_TRUE (back.State == ES_Emplaced);
970
+ EXPECT_TRUE (back.A0 .State == EAS_RValue);
971
+ EXPECT_TRUE (back.A1 .State == EAS_LValue);
972
+ EXPECT_TRUE (back.A2 .State == EAS_RValue);
973
+ EXPECT_TRUE (back.A3 .State == EAS_LValue);
968
974
}
969
975
{
970
976
SmallVector<int , 1 > V;
0 commit comments