1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // UNSUPPORTED: c++98, c++03 11 12 // <vector> 13 14 // template <class... Args> iterator emplace(const_iterator pos, Args&&... args); 15 16 #include <vector> 17 #include <cassert> 18 19 #include "min_allocator.h" 20 #include "asan_testing.h" 21 22 int main() 23 { 24 { 25 std::vector<int> v; 26 v.reserve(3); 27 assert(is_contiguous_container_asan_correct(v)); 28 v = { 1, 2, 3 }; 29 v.emplace(v.begin(), v.back()); 30 assert(v[0] == 3); 31 assert(is_contiguous_container_asan_correct(v)); 32 } 33 { 34 std::vector<int> v; 35 v.reserve(4); 36 assert(is_contiguous_container_asan_correct(v)); 37 v = { 1, 2, 3 }; 38 v.emplace(v.begin(), v.back()); 39 assert(v[0] == 3); 40 assert(is_contiguous_container_asan_correct(v)); 41 } 42 { 43 std::vector<int, min_allocator<int>> v; 44 v.reserve(3); 45 assert(is_contiguous_container_asan_correct(v)); 46 v = { 1, 2, 3 }; 47 v.emplace(v.begin(), v.back()); 48 assert(v[0] == 3); 49 assert(is_contiguous_container_asan_correct(v)); 50 } 51 { 52 std::vector<int, min_allocator<int>> v; 53 v.reserve(4); 54 assert(is_contiguous_container_asan_correct(v)); 55 v = { 1, 2, 3 }; 56 v.emplace(v.begin(), v.back()); 57 assert(v[0] == 3); 58 assert(is_contiguous_container_asan_correct(v)); 59 } 60 } 61