Мне кажется, что нет возможности магии. Более того, мне кажется, что любая такая магия будет разрушительной.
Единственная волшебная прагма GCC, которая позволяет пользователю точно настраивать параметры компиляции из внутреннего кода: pragma GCC optimize
.
Прагма работает функция мудр, потому что сам оптимизатор работает функция мудр, и вы можете легко увидеть, что он не оказывает никакого влияния на генерации RTTI для типов:
#include <iostream>
#include <typeinfo>
struct X
{
virtual int foo() {return 0;}
};
#pragma GCC optimize ("no-rtti")
struct Y
{
virtual int foo() {return 0;}
};
#pragma GCC reset_options
int
main()
{
std::cout << "X: " << sizeof (X) << " " << typeid(X).name() << std::endl;
std::cout << "Y: " << sizeof (Y) << " " << typeid(Y).name() << std::endl;
return 0;
}
В GCC 5.2, выход есть:
X: 8 1X
Y: 8 1Y