I'd been away from for long enough to forget how *bad* it is at discoverability.

Most languages that came after learned the lesson about using well-defined (if verbose) module naming to point to the origin of something, and if a client (module importer) wants to rename a module for convenience it may but if it doesn't the pattern is standardized. The best (read: my favorite) languages went ahead and glued module access to the filesystem organization so you can guess, easily, what file a given module loads; while you can sometimes play games with that, it gives you a starting point.

C++ is a billion years old and benefits from none of those learnings. The namespaces are completely disjoint from the filesystem. Literally any file included *from any file you include* can dump new symbols into your context. That was fine for, like, eight-file projects, but on modern thousand-file projects it's nightmare-time unless your team develops a rule for keeping sane, therefore every team does and every team's rules are different.

Good bloodly luck figuring out where a macro like TEST_CASE is defined if the project creators didn't document their thought process.

Sign in to participate in the conversation
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.