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
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.