Ice uses the C preprocessor to mimics definition dependencies.

A true package system a la Java or C# would bring a better ground for IDE integration by switching from a build system paradigm to a full semantic representation of the Slice type system.

I would love to write:

Code:
import IceGrid;

module management {
	interface MyObserver extends ObjectObserver {
	};
};
instead of:

Code:
#include <IceGrid/Observer.ice>

module management {
	interface MyObserver extends ObjectObserver {
	};
};
Quick poll: who actually uses the CPP facilities except to avoid recursive inclusions?