Как утверждать, что у определенного класса нет указателей vtbl в его макете?

У меня есть простой класс RAII, чтобы убедиться, что некоторая ручка правильно утилизирована. Теперь я хотел бы утверждать, что никто не собирается случайно добавлять к нему какие-либо виртуальные методы. Как я вижу это, мне нужно утверждать, что класс не имеет указателя vtbl.

Как я могу это сделать? Можно ли утверждать в момент компиляции?

ИЗМЕНИТЬ

Я соглашусь на компиляторы для настольных компьютеров. Насколько я знаю, нет компиляторов рабочего стола С++, которые не используют vtbl для реализации полиморфизма.

Ответ 1

Если у вас есть библиотека С++ 11, вы можете использовать std::is_polymorphic<T>:

Если T является полиморфным классом (то есть классом, который объявляет или наследует хотя бы одну виртуальную функцию), обеспечивает постоянное значение члена равным true. Для любого другого типа значение равно false.