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