C++ で each_split

C++ で split というと『戻り値型とかどうするの』みたいな問題があるんですが、『それなら戻り値ではなくて each みたいに関数オブジェクトを渡せばいいじゃん』みたいな感じでやってみた。

#include <iostream>
#include <sstream>
#include <string>

auto each_split = [](auto src, char del, auto f){
    std::stringstream input(src);
    std::string output;
    while(std::getline(input, output, del)){
        f(output);
    }
};

int
main(){
    each_split("homu,mami,mado", ',', [](auto str){
        std::cout << str << std::endl;
    });

    return 0;
}
/*
output:
homu
mami
mado
*/

関数テンプレートを定義するのがめんどくさかったのでラムダ式を使っていますが、実装には関係ないです。