Проблема с "reinterpret_cast" с использованием clang / llvm - ошибка: "... откачивает квалификаторы" - PullRequest
0 голосов
/ 31 января 2019

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

Я ценю любую помощь!Спасибо!

...