//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <iterator> // back_insert_iterator // requires CopyConstructible<Cont::value_type> // back_insert_iterator<Cont>& // operator=(const Cont::value_type& value); #include <iterator> #include <vector> #include <cassert> template <class C> void test(C c) { const typename C::value_type v = typename C::value_type(); std::back_insert_iterator<C> i(c); i = v; assert(c.back() == v); } class Copyable { int data_; public: Copyable() : data_(0) {} ~Copyable() {data_ = -1;} friend bool operator==(const Copyable& x, const Copyable& y) {return x.data_ == y.data_;} }; int main() { test(std::vector<Copyable>()); }