我记得在使用 Boost.Spirit 和 C++0x 的 std::function 添加时,您使用不使用指针的语法指定函数类型,例如定义 std::function<bool(int)> fn
, 而你会像 (bool(*)(int))fn
这样的指针.
谁能告诉我这个新语法的名称或任何相关引用,或者如何使用它?这似乎是一种适用于仿函数的多态函数类型语法,但我真的不知道如何使用它。
最佳答案
bool(int)
是函数的类型; bool(*)(int)
是函数指针的类型。换句话说,如果你定义
typedef bool(BF)(int);
typedef bool(pBF*)(int);
然后 BF*
与 pBF
相同。
std::function
模板通过(可变参数)模板捕获返回和参数类型:
template <typename R, typename ...Args> struct function
{
function(R(&f)(Args...)); // conceptually
}
关于c++ - int(int, int) 样式模板函数类型语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7027922/