Stream a file line by line with std::getline

C++
#include <fstream>
#include <functional>
#include <string>

bool forEachLine(const std::string& path, const std::function<void(const std::string&)>& fn) {
    std::ifstream in(path);
    if (!in) return false;
    std::string line;
    while (std::getline(in, line)) {
        if (!line.empty() && line.back() == '\r') line.pop_back();
        fn(line);
    }
    return in.eof();
}