C++ で std::regex を使った split

C++ で split が話題になっていたのでやってみた。

#include <regex>
#include <iostream>
#include <string>
#include <vector>

int
main(){
    auto split = [](std::string src, auto pat){
        std::vector<std::string> result{};
        std::regex reg{pat};
        std::copy(
            std::sregex_token_iterator{src.begin(), src.end(), reg, -1},
            std::sregex_token_iterator{},
            std::back_inserter(result)
        );
        return result;
    };

    std::string src{"homu,mami,mado"};

    for(auto&& str : split(src, ",")){
        std::cout << str << std::endl;
    }
    

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

C++ で split のような関数を標準ライブラリにいれる場合、戻り値型をどうするのかがむずかしいよね…。