llvm libc++ 中缺少哈希表 class

Hashtable class is missing in llvm libc++

我正在将我的 Android 项目中的标准库从 gnustl (libstdc++) 迁移到 llvm-libc++。 在其中一个项目中,我收到多个错误 header 文件

  fatal error: 'hashtable.h' file not found
#include "hashtable.h"
         ^~~~~~~~~~~~~
clang++.exe: error: clang frontend command failed due to signal (use -v to see invocation)
Android clang version 5.0.300080  (based on LLVM 5.0.300080)

预处理文件输出显示该文件由 gnustl 提供

.. f:/nugetcache/androidndk.16.1.1/sources/cxx-stl/gnu-libstdc++/4.9/include/backward\hashtable.h

但是在我迁移到 libc++ 之后,我在 libc++ 中找不到等效的 header。此 header 文件声明 class HashTable

template<class _Val, class _Key, class _HashFcn,
       class _ExtractKey, class _EqualKey, class _Alloc>
    class hashtable
    {...}

我尝试在 libc++ 代码中搜索此 header 和此 class 但找不到任何内容。我认为这是一个重要的 class,必须由 libc++ 以某种形式提供,但我无法识别它。

有没有人因为这种差异而遇到错误,建议是什么 work-around?

I tried searching for this header and this class in libc++ code but could not find anything. I think this is an important class and must be provided by libc++ in some form but I could not identify it.

这是一个 libstdc++ 扩展,从 pre-C++11 天遗留下来的。

如果你看一下内容here,你会看到它在顶部有一个注释说:这是一个内部头文件,包含在其他库头文件中.不要尝试直接使用它。

libc++ 不包含那个 header 文件并且包含针对不同 类 映射的更具体的接口。

因此@marshall 指出这一点是正确的,他说我们根本不需要 header。