basically i have a code like this
Code:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
int main()
{
using namespace std;
vector<int> vec(istream_iterator<int>(cin), istream_iterator<int>());
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, "-"));
return 0;
}
when I try to compile I get the errors
error: request for member `begin' in `vec', which is of non-class type `std::vector<int, std::allocator<int> > ()(std::istream_iterator<int, char, std::char_traits<char>, ptrdiff_t>, std::istream_iterator<int, char, std::char_traits<char>, ptrdiff_t> (*)())' Test main.cpp line 12 1168529845046 1101
error: request for member `end' in `vec', which is of non-class type `std::vector<int, std::allocator<int> > ()(std::istream_iterator<int, char, std::char_traits<char>, ptrdiff_t>, std::istream_iterator<int, char, std::char_traits<char>, ptrdiff_t> (*)())' Test main.cpp line 12 1168529845046 1102
Now I usually get that error when explicitly using the () when constructing and trying to call a member for it, but this time I get it even when I propperly use a constructor with arguments.
I changed the code to this, which works
Code:
vector<int> vec =
vector<int>(istream_iterator<int>(cin), istream_iterator<int>());
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, "-"));
But why?