posibles duplicados:
Why can't my C++ compiler deduce template argument for boost function?
Isn't the template argument (the signature) of std::function part of its type?conversiones implícitas con std :: función
Tengo el siguiente:
#include <functional>
void Foo(std::function<void()> );
void Foo(std::function<void(int)>);
void Bar();
int main()
{
Foo(Bar); // Error: ambiguous
Foo([](){}); // Error: ambiguous
Foo(std::function<void()>(Bar )); // Ok
Foo(std::function<void()>([](){})); // Ok
}
¿Puedo hacer las dos primeras líneas en main() trabajo sin el estilo de función cas t en las últimas dos líneas? Tal vez con una solución std :: enable_if?