#include <functional> void test(std::function<void(int)> f) {} void test(std::function<int(int)> f) {} int main() { test([] (int x) -> int { return x; }); }
Standard input is empty
prog.cpp:8:2: error: call to 'test' is ambiguous
test([] (int x) -> int { return x; });
^~~~
prog.cpp:3:6: note: candidate function
void test(std::function<void(int)> f) {}
^
prog.cpp:4:6: note: candidate function
void test(std::function<int(int)> f) {}
^
1 error generated.
Standard output is empty