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