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;
}