Как реализуется std:: has_virtual_destructor?

Как можно реализовать std::has_virtual_destructor и подобные проверки? Я пробовал смотреть заголовок type_traits в Visual Studio, но слишком много макросов и шаблонов, чтобы даже получить представление. Может ли эта проверка быть выражена в любой достаточно простой форме? Мне бы хотелось хотя бы узнать принцип его работы, потому что сейчас я понятия не имею.

Ответ 1

Многие черты типа требуют магии компилятора: черты, по существу, предоставляют интерфейс библиотеки некоторым крючкам, предоставляемым различными компиляторами. То, как компиляторы реализуют эти перехватчики, полностью зависит от них, и нет согласованного интерфейса.

На нынешнем заседании обсуждалась возможность добавления размышлений к будущему пересмотру, который может в конечном итоге привести к реализации библиотеки, если такие черты, как std::has_virtual_destructor<T>. Однако наступит какое-то время, прежде чем появится что-то вроде отражения.