Why does c++ stick to this kind of symbol system? <p>The system I mean is the one where anything you want to reference has to be prototyped or defined either above your current line or in a referenced header, not sure if this has a name. </p> <p>I'm cool with headers but sometimes the necessity of forward prototypes forces me into writing really disjointed and hard to manage snippets. </p> <p>I get why it was a thing once upon a time but is there any reason modern c++ can't bring us the convenience of allowing definitions in any order, anywhere like the plethora of newer managed languages?</p>