г ++ позволяет эту конструкцию istream_iterator из ifstream Например:Почему я не могу построить std :: istream_iterator с неназванным временным?
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)'
Кто-нибудь знает, почему это не работает? - благодаря!
Спасибо, Йоханнес! – Stumped6789
И снова, если это было разрешено, вы создадите итератор для уже уничтоженного ifstream, и это будет UB –