//===----------------------------------------------------------------------===// // // 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. // //===----------------------------------------------------------------------===// // // back_insert_iterator // requires CopyConstructible // back_insert_iterator& // operator=(const Cont::value_type& value); #include #include #include template void test(C c) { const typename C::value_type v = typename C::value_type(); std::back_insert_iterator 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()); }