(<*>).(<*>)
более конкретно. вот есть у меня полиморфная функция:
template <typename A, template<typename>typename P = Parser>
P<A> map_parsing_failure(function<ParsingError(ParsingError)> map_fn, P<A> parser)
{
return P<A>{[=](auto input) {
return visit(overloaded {
[=](ParsingError err) -> ParsingResult<A, Input> { return map_fn(err); },
[](ParsingSuccess<A, Input> x) -> ParsingResult<A, Input> { return x; }
}, parser(input));
}};
}