У меня проблема с компиляцией следующего кода с использованием 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
Я ценю любую помощь!Спасибо!