泛型算法COPY中传入 istream_iterator对象无法编译的有关问题

泛型算法COPY中传入 istream_iterator对象无法编译的问题
int   main(int   argc,char   **argv)
{
vector <int>   vec;                       copy(istream_iterator <int> (cin),istream_iterator <int> (),back_inserter(vec));
        system( "pause ");
}
以上代码可正常编译


如果改成


int   main(int   argc,char   **argv)
{
vector <int>   vec;
istream_iterator <int>   isiter1(cin);
istream_iterator <int>   isiter2();
copy(isiter1,isiter2,back_inserter(vec));                      
                system( "pause ");
}
就编译不过了。

为什么istream_iterator对象一定要在copy()中构造?


------解决方案--------------------
改成:
vector <int> vec;
istream_iterator <int> isiter1(cin);
istream_iterator <int> isiter2;
copy(isiter1, isiter2, back_inserter(vec));


C++中,
class A;
A a();//声明了一个函数a,返回值类型是A。
A a;//这才是定义一个对象。

------解决方案--------------------
int main(int argc,char **argv)
{
vector <int> vec; copy(istream_iterator <int> (cin),istream_iterator <int> (),back_inserter(vec));
system( "pause ");
}
直接编译过去
VC9