使用clang / llvm的“ reinterpret_cast”问题-错误:“ .. casts离开限定词”

时间:2019-01-31 14:42:48

标签: c++ clang llvm reinterpret-cast

我在使用clang / llvm编译以下代码时遇到问题:

头文件:

inline void**& getvtable(void* inst, size_t offset = 0)
{
    return *reinterpret_cast<void***>((size_t)inst + offset);
}

inline const void** getvtable(const void* inst, size_t offset = 0)
{
    return *reinterpret_cast<const void***>((size_t)inst + offset);
}


template<typename Fn>
inline Fn getvfunc(const void* inst, size_t index, size_t offset = 0)
{
    return reinterpret_cast<Fn>(getvtable(inst, offset)[index]); //Error appears here
}

使用gcc进行编译可以正常工作。 但是,使用clang会产生以下错误:

reinterpret_cast from 'const void *' to 'model_t *(*)(void *)' casts away qualifiers

感谢您的帮助!谢谢!

0 个答案:

没有答案