Я создал оболочку для std :: transform, чтобы каждый раз не пропускать начало и конец.
template <typename C, typename C2, typename UnaryOperation>
void transform(const C& c1, C2& result, const UnaryOperation& up)
{
std::transform(std::begin(c1), std::end(c1), std::begin(result), up);
}
Я могу использовать вот так
utils::transform(container, result, [](const auto& o) {return doSometing;});
Мне нужна еще одна подпись, где я мог бы сделать что-то вроде
struct X {
Object foo(std::string const& ) const;
void bar(std::vector<std::string> const& container) const
{
std::vector<Object> result;
utils::transform(container, std::back_inserter(result), &X::foo);
// do something with result
}
};
Но это не работает. Что мне здесь не хватает? Что-то то в подписи? Как мне заставить это работать?