g ++ позволяет эту конструкцию istream_iterator из экземпляра ifstream:
std::ifstream ifstr("test.txt");
std::istream_iterator<std::string> iter1(ifstr);
... но он не допускает такую же конструкцию с неназванным временным:
std::istream_iterator<std::string> iter2(std::ifstream("test.txt"));
Это дает:
ошибка: нет соответствующей функции для вызова ‘std :: istream_iterator, ptrdiff_t> :: istream_iterator (std :: ifstream)’
Кто-нибудь знает, почему это не работает? - спасибо!