如何测试functor是否是一个可调用的对象,它引用一个int并返回一个bool?
template<typename functor>
void foo(functor f)
{
static_assert('functor == bool (int&)', "error message");
int x = -1;
if (f(x))
std::cout << x << std::endl;
}
bool bar(int& x)
{
x = 4711;
return true;
}
struct other
{
bool operator()(int& x)
{
x = 815;
return true;
}
};
最佳答案 在我看来,你真的不想检查一个仿函数的签名,你想限制用户可以传入的内容,首先:
如果你有权访问std :: function,你可以这样做:
void foo(const std::function<bool(int&)>& f)