Implemented P0084R2 (Emplace Return Type)

This commit is contained in:
Ion Gaztañaga
2016-08-29 16:53:44 +02:00
parent 9f9fdeaa9a
commit 0617d0e538
8 changed files with 79 additions and 41 deletions

View File

@@ -175,13 +175,18 @@ bool test_emplace_back(container_detail::true_)
new(&expected [4]) EmplaceInt(1, 2, 3, 4);
new(&expected [5]) EmplaceInt(1, 2, 3, 4, 5);
Container c;
c.emplace_back();
if(!test_expected_container(c, &expected[0], 1)){
return false;
typedef typename Container::reference reference;
{
reference r = c.emplace_back();
if(&r != &c.back() && !test_expected_container(c, &expected[0], 1)){
return false;
}
}
c.emplace_back(1);
if(!test_expected_container(c, &expected[0], 2)){
return false;
{
reference r = c.emplace_back(1);
if(&r != &c.back() && !test_expected_container(c, &expected[0], 2)){
return false;
}
}
c.emplace_back(1, 2);
if(!test_expected_container(c, &expected[0], 3)){
@@ -222,13 +227,18 @@ bool test_emplace_front(container_detail::true_)
new(&expected [4]) EmplaceInt(1);
new(&expected [5]) EmplaceInt();
Container c;
c.emplace_front();
if(!test_expected_container(c, &expected[0] + 5, 1)){
return false;
typedef typename Container::reference reference;
{
reference r = c.emplace_front();
if(&r != &c.front() && !test_expected_container(c, &expected[0] + 5, 1)){
return false;
}
}
c.emplace_front(1);
if(!test_expected_container(c, &expected[0] + 4, 2)){
return false;
{
reference r = c.emplace_front(1);
if(&r != &c.front() && !test_expected_container(c, &expected[0] + 4, 2)){
return false;
}
}
c.emplace_front(1, 2);
if(!test_expected_container(c, &expected[0] + 3, 3)){