Although this does not work for overloaded functions, for all other cases (free functions, classes implementing operator(), and lambdas) this short solutions works in C++11:
template
struct is_callable: std::is_convertible> { };
Note: std::is_invocable is available since C++17.