std::functions 错误向量

Vector of std::functions error

我有一个 std::functions 的向量,但它无法编译。如果我这样做:

#include <vector>
#include <functional>
using namespace std;
vector<function> functions;

我明白了 note: expected a type, got ‘function’ error: template argument 2 is invalid。我正在使用 -std=c++11 在 g++ 上编译。我怎样才能让它工作?谢谢!

std::function 要求您为其提供将函数表示为模板参数所需的其他类型(return 类型,参数类型)。没有模板参数 std::function 是未定义的,这会给你这里的错误。

因此,在尝试定义包含函数的向量之前,您需要先弄清楚函数的类型。

您需要指定要保留在向量中的函数的类型,如下所示:

#include <vector>
#include <functional>                                                                                         
using namespace std;

vector<function<int()>> functions;

int main() {
    functions.push_back([](){ return 1; });
    return 0;
}

> g++ test.cpp -std=c++1y

在这里,您指定 functions 将采用不带参数的 function,而 returns 将采用 int