int main() { #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES { typedef std::unique_ptr<int, do_nothing> Ptr; typedef std::vector<Ptr> C; C c1; int x[6] = {0}; for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); C c2; for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin(), Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 0, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); c1.clear(); for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); c2.clear(); for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin()+1, Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 1, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); c1.clear(); for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); c2.clear(); for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin()+2, Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 2, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); c1.clear(); for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); c2.clear(); for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin()+3, Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 3, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); } #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES }
int main() { { typedef std::unique_ptr<int, do_nothing> Ptr; typedef std::vector<Ptr> C; C c1; int x[6] = {0}; for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); C c2; for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin(), Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 0, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); c1.clear(); for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); c2.clear(); for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin()+1, Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 1, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); c1.clear(); for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); c2.clear(); for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin()+2, Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 2, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); c1.clear(); for (int i = 0; i < 3; ++i) c1.push_back(Ptr(x+i)); c2.clear(); for (int i = 0; i < 3; ++i) c2.push_back(Ptr(x+i)); insert3at(c2, c2.begin()+3, Ptr(x+3), Ptr(x+4), Ptr(x+5)); test(std::move(c1), 3, Ptr(x+3), Ptr(x+4), Ptr(x+5), c2); } }
int main(int, char**) { { typedef std::vector<int> C; C c1; for (int i = 0; i < 3; ++i) c1.push_back(i); C c2 = c1; insert3at(c2, c2.begin(), 'a', 'b', 'c'); test(c1, 0, 'a', 'b', 'c', c2); c2 = c1; insert3at(c2, c2.begin()+1, 'a', 'b', 'c'); test(c1, 1, 'a', 'b', 'c', c2); c2 = c1; insert3at(c2, c2.begin()+2, 'a', 'b', 'c'); test(c1, 2, 'a', 'b', 'c', c2); c2 = c1; insert3at(c2, c2.begin()+3, 'a', 'b', 'c'); test(c1, 3, 'a', 'b', 'c', c2); } { typedef nasty_vector<int> C; C c1; for (int i = 0; i < 3; ++i) c1.push_back(i); C c2 = c1; insert3at(c2, c2.begin(), 'a', 'b', 'c'); test(c1, 0, 'a', 'b', 'c', c2); c2 = c1; insert3at(c2, c2.begin()+1, 'a', 'b', 'c'); test(c1, 1, 'a', 'b', 'c', c2); c2 = c1; insert3at(c2, c2.begin()+2, 'a', 'b', 'c'); test(c1, 2, 'a', 'b', 'c', c2); c2 = c1; insert3at(c2, c2.begin()+3, 'a', 'b', 'c'); test(c1, 3, 'a', 'b', 'c', c2); } return 0; }