>>12
You can design anything you want in C (and especially C++). You need an object system? Structs with function pointers. You need a typechecker? Design it in YACC or m4. You want to use monads? Do it in the preprocessor. Aspect oriented programming? Do it. It is an extremely flexible language, it put you on the chair of language designer.