GNU C ++标准库具有:
struct _Hash_impl
{
static size_t
hash(const void* __ptr, size_t __clength,
size_t __seed = static_cast<size_t>(0xc70f6907UL))
{ return _Hash_bytes(__ptr, __clength, __seed); }
/* etc. */
}
作为其实现的一部分(例如,它在字符串上使用的内容)。现在,我也想使用那个代码......我怎样才能以便携方式访问它(比如以一种与clang的libc ++一起使用的方式)?
答案 0 :(得分:4)
否即可。您无法以便携方式访问编译器的内部实现细节。怎么可能有用?
在完全由同一编译器供应商进行下一次编译器更新之后,您甚至无法确定实现是否仍然存在。或者更糟糕的是,它仍然可以正常编译但具有不同的运行时行为。这是一个可维护性的噩梦和无休止的调试会议等待发生。
如果将来需要可移植性或向后兼容性,请实现自己的哈希函数并模仿if( Input.touches.Length > 0 )
{
if ( Input.touches[0].phase == TouchPhase.Began )
{
的行为。
答案 1 :(得分:0)
我一直在想,也许我可以在没有实际操作的情况下获得无聊的效果。我还没有实现这个,但我相信它应该有效:
my_allocator
std::vector<char, my_allocator>
种类的原始缓冲区的类std::vector
。void* buf
和字节大小n
,我们实例化一个包装器向量:std::vector<int, my_allocator<int>> vec(n, {}, buf);
std::hash(vec)
FTW!