矢量std :: functions错误

时间:2015-07-24 16:52:20

标签: c++ g++ stdvector std-function

我有一个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 ++。我怎样才能让它发挥作用?谢谢!

2 个答案:

答案 0 :(得分:1)

std::function要求您为其提供将函数表示为模板参数(返回类型,参数类型)所需的其他类型。如果没有模板参数std::function未定义,则会为您提供此处的错误。

因此,在尝试定义包含它们的向量之前,需要先确定函数的类型。

答案 1 :(得分:0)

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

#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,并返回int