C++ 为什么是g++;不';你不支持Ubuntu上的分配器构造函数的功能吗? #包括 #包括 int main(int argc,字符**argc) { std::向量x; 函数f(std::allocator_arg,x.get_allocator()); 返回1; }

C++ 为什么是g++;不';你不支持Ubuntu上的分配器构造函数的功能吗? #包括 #包括 int main(int argc,字符**argc) { std::向量x; 函数f(std::allocator_arg,x.get_allocator()); 返回1; },c++,c++11,ubuntu,stl,C++,C++11,Ubuntu,Stl,使用:g++test.cpp-o test-std=c++11 在ubuntu15上失败,我的g++版本是5.2.1。在XCode和VS2015上一切正常。我检查/usr/include/c++/5/functional,它没有分配器的构造函数。我检查了www.cpluplus.com,它用分配器定义了构造函数 有人可以告诉我如何解决这个问题,或者我必须更改g++stl, 如何用其他stl更改g++stl?我已经下载了sgi stl源代码。 请帮忙!非常感谢。在std::function中使用分

使用:
g++test.cpp-o test-std=c++11

ubuntu15
上失败,我的
g++版本是5.2.1
。在
XCode
VS2015
上一切正常。我检查
/usr/include/c++/5/functional
,它没有分配器的构造函数。我检查了
www.cpluplus.com
,它用分配器定义了构造函数
有人可以告诉我如何解决这个问题,或者我必须更改g++stl, 如何用其他stl更改g++stl?我已经下载了sgi stl源代码。

请帮忙!非常感谢。

std::function
中使用分配器有很多问题

查看g++
函数
源代码,它显然没有使用任何分配器
构造
来进行动态分配,而是简单地使用
新建
删除


因此,我不确定如何提供分配器来执行堆分配。但是,一个坏主意是从
函数
派生并重载
new
delete
操作符。我建议你不要走这条路。这是一个非常非常糟糕的想法。

allocator\u arg
是一个常数-你的代码没有比函数f(PI)更有意义。在GCC 6.1.0之前,仍然不支持带有分配器的
std::function
,源代码有注释
//TODO:needs allocator\u arg\t
非常感谢。我放弃使用分配器~
#include <vector>
#include <functional>

int main(int argc, char** argc)
{
    std::vector<int> x;
    std::function<void (void)> f(std::allocator_arg,x.get_allocator());
    return 1;
}