Если я хочу использовать std::any
я могу использовать его с отключенным RTTI. Следующий пример компилируется и выполняется, как ожидалось, также с -fno-rtti
с gcc.
int main()
{
std::any x;
x=9.9;
std::cout << std::any_cast<double>(x) << std::endl;
}
Но как std::any
хранит информацию о типе? Как я вижу, если я вызываю std::any_cast
с "неправильным" типом, я получил исключение std::bad_any_cast
как и ожидалось.
Как это реализовано или это может быть только функция gcc?
Я обнаружил, что boost::any
также не нуждался в RTTI, но я также не нашел, как это решить. Повышает ли какая-либо потребность RTTI? ,
Копание в заголовок STL не дает мне никакого ответа. Этот код почти не читается для меня.