Часто я читаю о том, что в некоторых программах вырезаются некоторые функции C++, чтобы обеспечить совместимость с плохими/старыми/экзотическими компиляторами C++.
Этот последний случай. Я понял: Box2D не использует пространства имен, потому что им необходимо поддерживать:
плохие компиляторы C++, в которых поддержка пространств имен может быть неравномерной
Больший пример, который я могу придумать, — это Qt, который полагается на MOC, сильно ограничивает использование шаблонов и избегает шаблонов (ну, это, по крайней мере, верно для Qt3 и предыдущих версий, Qt4 в основном делает это, чтобы придерживаться своих соглашений).
Мне интересно какие компиляторы такие плохие?
Там существует множество компиляторов C++ (я никогда не слышал о большинстве из них), но я надеюсь, что все они поддерживают наиболее распространенные (/простые?) функции C++, такие как пространства имен (если они не мертвы); разве это не так?
Какие функции наиболее не поддерживаются?
Я легко могу ожидать отсутствия внешних шаблонов, возможно, частичных шаблонов. специализация и тому подобные особенности. В лучшем случае даже RTTI или исключения, но о пространствах имен я бы никогда не заподозрил.
Подробнее здесь: https://stackoverflow.com/questions/454 ... -compilers