diff options
author | Eric Fiselier <eric@efcs.ca> | 2016-07-21 03:20:17 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2016-07-21 03:20:17 +0000 |
commit | 0e411641a338b0effbdcbcd6f0772a0663729afd (patch) | |
tree | 0c0f13d524a1dede6b8bf225a6110a9bfc19efd9 /libcxx/test/std/containers/sequences/vector/vector.modifiers | |
parent | fa7c6f0d84bc1148eb1d17a18ad0b80d5521ba16 (diff) | |
download | bcm5719-llvm-0e411641a338b0effbdcbcd6f0772a0663729afd.tar.gz bcm5719-llvm-0e411641a338b0effbdcbcd6f0772a0663729afd.zip |
Implement P0084r2. Changing emplace return types.
llvm-svn: 276230
Diffstat (limited to 'libcxx/test/std/containers/sequences/vector/vector.modifiers')
-rw-r--r-- | libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace_back.pass.cpp | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace_back.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace_back.pass.cpp index 61ccade76b0..6b435484d01 100644 --- a/libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace_back.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace_back.pass.cpp @@ -7,9 +7,11 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: c++98, c++03 + // <vector> -// template <class... Args> void emplace_back(Args&&... args); +// template <class... Args> reference emplace_back(Args&&... args); #include <vector> #include <cassert> @@ -18,8 +20,6 @@ #include "test_allocator.h" #include "asan_testing.h" -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - class A { int i_; @@ -52,20 +52,19 @@ public: double getd() const {return d_;} }; -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - int main() { -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES { std::vector<A> c; - c.emplace_back(2, 3.5); + A& r1 = c.emplace_back(2, 3.5); assert(c.size() == 1); + assert(&r1 == &c.back()); assert(c.front().geti() == 2); assert(c.front().getd() == 3.5); assert(is_contiguous_container_asan_correct(c)); - c.emplace_back(3, 4.5); + A& r2 = c.emplace_back(3, 4.5); assert(c.size() == 2); + assert(&r2 == &c.back()); assert(c.front().geti() == 2); assert(c.front().getd() == 3.5); assert(c.back().geti() == 3); @@ -74,29 +73,32 @@ int main() } { std::vector<A, stack_allocator<A, 4> > c; - c.emplace_back(2, 3.5); + A& r1 = c.emplace_back(2, 3.5); assert(c.size() == 1); + assert(&r1 == &c.back()); assert(c.front().geti() == 2); assert(c.front().getd() == 3.5); assert(is_contiguous_container_asan_correct(c)); - c.emplace_back(3, 4.5); + A& r2 = c.emplace_back(3, 4.5); assert(c.size() == 2); + assert(&r2 == &c.back()); assert(c.front().geti() == 2); assert(c.front().getd() == 3.5); assert(c.back().geti() == 3); assert(c.back().getd() == 4.5); assert(is_contiguous_container_asan_correct(c)); } -#if TEST_STD_VER >= 11 { std::vector<A, min_allocator<A>> c; - c.emplace_back(2, 3.5); + A& r1 = c.emplace_back(2, 3.5); assert(c.size() == 1); + assert(&r1 == &c.back()); assert(c.front().geti() == 2); assert(c.front().getd() == 3.5); assert(is_contiguous_container_asan_correct(c)); - c.emplace_back(3, 4.5); + A& r2 = c.emplace_back(3, 4.5); assert(c.size() == 2); + assert(&r2 == &c.back()); assert(c.front().geti() == 2); assert(c.front().getd() == 3.5); assert(c.back().geti() == 3); @@ -111,6 +113,4 @@ int main() assert(c.size() == 2); assert(is_contiguous_container_asan_correct(c)); } -#endif -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES } |