libstdc ++是否支持std :: unordered
与CodeReview上的这个问题有关,我尝试使用std::unordered_map
与自定义分配器,但显然这不适用于gcc / clang和libstdc ++。 该错误可以通过使用std::allocator
初始化一个空的哈希映射来生成
#include <unordered_map>
int main()
{
typedef std::allocator<std::pair<const int, int>> A;
typedef std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, A> H;
auto h = H{A()}; // ERROR, cannot find constructor H::H(const A&)
}
现场示例 。
问题 :libstdc ++是否支持用单个分配器构造std::unordered_map
作为参数不完整?
更新 :进一步的检查表明,对于除std::vector
以外的几乎所有容器,直接使用libstdc ++访问类型定义和分配器成员函数中的分配器,而不是通过std::allocator_traits
。 这适用于std::allocator
但对于所有自定义分配器都失败,除非它们直接添加这些成员和typedefs。
在2013-08-01生成的最新doxygen文档中,它位于第178行:
explicit
unordered_map(const allocator_type& __a)
: _M_h(__a)
{ }
但是,在4.8.1的文档中,它不在那里,这与我的本地文档相同。 就g ++ 4.8而言,它没有实现。
找到补丁的链接。 它的日期是2013年4月22日,这是4.8版发布之后的一小部分。
链接地址: http://www.djcxy.com/p/74281.html上一篇: Is libstdc++ support for std::unordered
下一篇: Steps for profiling performance of a website running on azure