#include <iostream>
#include <vector>
#include <iterator>
#include <string>
#include <algorithm>
class line {
std::string data;
public:
friend std::istream& operator>>(std::istream &is, line &l)
{
return std::getline(is, l.data);
}
operator std::string() { return data; }
};
int main()
{
std::vector<std::string> lines;
std::copy(
std::istream_iterator<line>(std::cin),
std::istream_iterator<line>(),
std::back_inserter(lines));
std::cout << "there were " << lines.size() << " lines of input\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+CmNsYXNzIGxpbmUgewogICAgIHN0ZDo6c3RyaW5nIGRhdGE7CiBwdWJsaWM6CiAgICAgZnJpZW5kIHN0ZDo6aXN0cmVhbSYgb3BlcmF0b3I+PihzdGQ6OmlzdHJlYW0gJmlzLCBsaW5lICZsKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0bGluZShpcywgbC5kYXRhKTsKICAgICB9CiAgICAgb3BlcmF0b3Igc3RkOjpzdHJpbmcoKSB7IHJldHVybiBkYXRhOyB9Cn07CgppbnQgbWFpbigpCnsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7CiAgICAgc3RkOjpjb3B5KAogICAgICAgICBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8bGluZT4oc3RkOjpjaW4pLAogICAgICAgICBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8bGluZT4oKSwKICAgICAgICAgc3RkOjpiYWNrX2luc2VydGVyKGxpbmVzKSk7CiAgICAgc3RkOjpjb3V0IDw8ICJ0aGVyZSB3ZXJlICIgPDwgbGluZXMuc2l6ZSgpIDw8ICIgbGluZXMgb2YgaW5wdXRcbiI7Cn0K
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_algobase.h: In static member function ‘static _OI std::__copy_move<<anonymous>, <anonymous>, <template-parameter-1-3> >::__copy_m(_II, _II, _OI) [with _II = std::istream_iterator<line, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, bool <anonymous> = false, bool <anonymous> = false, <template-parameter-1-3> = std::input_iterator_tag]’:
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_algobase.h:396: instantiated from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false, _II = std::istream_iterator<line, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]’
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_algobase.h:435: instantiated from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false, _II = std::istream_iterator<line, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]’
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_algobase.h:466: instantiated from ‘_OI std::copy(_II, _II, _OI) [with _II = std::istream_iterator<line, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]’
prog.cpp:22: instantiated from here
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_algobase.h:312: error: passing ‘const line’ as ‘this’ argument of ‘line::operator std::string()’ discards qualifiers