i passing pointer function function template:
int f(int a) { return a+1; } template<typename f> void use(f f) { static_assert(std::is_function<f>::value, "function required"); } int main() { use(&f); // plain f not work either. } but template argument f not recognized is_function function , static assertion fails. compiler error message says f int(*)(int) pointer function. why behave that? how can recognize function or pointer function in case?
f pointer function (regardless of whether pass f or &f). remove pointer:
std::is_function<typename std::remove_pointer<f>::type>::value (ironically, std::is_function<std::function<ft>> == false ;-))
Comments
Post a Comment