This is a generic programming question. In theory I could get a ton of answers by posting on StackOverflow etc., but I'm affraid they'd all be stemming from the same, current dogma, and I'm looking for unconventional approaches.
I am trying to more or less follow Casey's approach to code organization. My problem occurs when I'm trying to minimize the number of transalation units in my C++ code, ideally to one (this is done to minimize compilation time.). However, unfortunately C++ compiler is not allowed to look ahead in the translation unit for the symbols that it needs (any reference to a previously undeclared or undefined symbol is an instant compilation error). This leads to either having to painstakingly rearrange functions in the source file so that there are no forward calls (which incidentally leads to entire program being stored in a backward order in the source file), or having to add those annoying function declarations.
Coming from languages where such nonsense was not required, I hate it with passion :) Now, my question is - what are your approaches to dealing with this in practice?