#include <functional>
void foo(double){}
struct foo_functor{
void operator()(float) const{}
};
int main(){
std::function<void(int)> f1(foo), f2((foo_functor()));
f1(5);
f2(6);
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+Cgp2b2lkIGZvbyhkb3VibGUpe30KCnN0cnVjdCBmb29fZnVuY3RvcnsKICB2b2lkIG9wZXJhdG9yKCkoZmxvYXQpIGNvbnN0e30KfTsKCmludCBtYWluKCl7CiAgc3RkOjpmdW5jdGlvbjx2b2lkKGludCk+IGYxKGZvbyksIGYyKChmb29fZnVuY3RvcigpKSk7CiAgZjEoNSk7CiAgZjIoNik7Cn0K