C++ struct直接跟括号组成仿函数?

标签 c++

当我阅读 std::function 时,我发现以下语法令人困惑。直接跟在空括号后面的结构在这里做什么?它等效于声明一个结构对象并调用其运算符。

#include <iostream>

using namespace std;

int main() {

    struct F {
        bool operator()(int a) {
            return a>0;
        }
    };

    function<bool(int)> f = F(); //What does the syntax F() mean here?
    struct F ff;
    cout <<  f(1) <<endl; 
    cout << ff(1) <<endl;
    return 0;
}

最佳答案

What does the syntax F() mean here?

意思是构造一个F类型的对象使用默认构造函数。

A std::function可以使用满足其调用条件的任何可调用对象来构造。在您的特定用例中,F 的一个实例符合 std::function<bool(int)> 的标准.因此,

function<bool(int)> f = F();

是构造 f 的有效语句.

关于C++ struct直接跟括号组成仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38062118/

相关文章:

c++ - QFtp 仅在目录不存在时才创建目录

c++ - CUDA - 并行生成 Halton 序列

c++ - future 的类型有可能转变吗?

c++ - 如何正确结束正则表达式 url 匹配

c++ - 如何跳过文本文件中的标题行并将其余数据读回主函数?

c++ - 这会导致内存泄漏吗?

c++ - 如何在 c 中的 opencv 2.3 编码中向序列添加元素

c++ - opengl 着色器程序中的重复顶点

c++ - 在数组中查找 y 的 x 个连续值的最有效方法是什么?

c++ - 有没有办法使用初始化为第一行的指针访问二维数组的第二行?