Это пример так называемого самого неприятного анализа . Это хит, который ужалит многих программистов на С ++.
По сути, этот код не означает, что вы думаете, что он означает:
vector<string> v( istream_iterator<string>( in ), istream_iterator<string>() );
Вместо объявления переменной типа vector<string>
вы фактически объявляете функцию с именем v
, которая возвращает vector<string>
.
Чтобы исправить это, используйте operator=
, например:
vector<string> v = vector<string>( istream_iterator<string>( in ), istream_iterator<string>() );