auto split = [](string&& a) -> container { auto result = container{}; string::size_type found, current = 0; while ((found = a.find(",", current)) != string::npos) { result.emplace_back(a, current, found - current); current = found + 1; } result.emplace_back(a, current, a.size() - current); return result; };