Forward declarations конкретно чего?
Пункт спорный даже не из-за перекомпиляции, а из-за 1) циклической зависимости между модулями
Пространств имён должно быть намного меньше, чем файлов, плюс они должны быть предельно короткими. Избегать using namespace.
@from engine::math import Vector3D
class Object
{
// ...
private:
Vector3D position;
Vector3D speed;
}#include <engine/math/math.i>
class Object
{
// ...
private:
engine::math::Vector3D position;
engine::math::Vector3D speed;
}