c++ - int(int, int) 样式模板函数类型语法

标签 c++ templates function syntax function-pointers

我记得在使用 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/

相关文章:

c++ - 优先级队列的重载运算符

c++ - 在构造函数调用期间将 this 传递给对象内的对象

c++ - 在 C++ 中呈现 SWF 文件

html - 使用 Meteor 插入 HTML 标记

python - 另一个具有功能的开关盒

c++ - 在头文件中声明全局常量对象

c++ - 如何通过编译时 "if"返回 T 值?

C++ "smart pointer"自动转换为裸指针但不能显式删除的模板

php - 如何将 php var 传递给 js 文件中定义的函数

C:函数指针