Suppose I have two functions that receive different lambda types as arguments:
template<typename F>
void func1(F&& lambda) {
// lambda must be [](unsigned int) -> short
}
template<typename F>
void func2(F&& lambda) {
// lambda must be [](const vector<string>&) -> void
}
How can I restrict these lambda signatures in C++17, to match exactly what I need in each case?