| > And I'm left wondering, is this just how C++ is? Can't the language provide tooling for me to better adhere to its guidelines Well, first, the language can't provide tooling: C++ is defined formally, not through tools; and tools are not part of the standard. This is unlike, say, Rust, where IIANM - so far, Rust has been what the Rust compiler accepts. But it's not just that. C++ design principles/goals include: * multi-paradigmatism; * good backwards compatibility; * "don't pay for what you don't use" and all of these in combination prevent baking in almost anything: It will either break existing code; or force you to program a certain way, while legitimate alternatives exist; or have some overhead, which you may not want to pay necessarily. And yet - there are attempts to "square the circle". An example is Herb Sutter's initiative, cppfront, whose approach is to take in an arguably nicer/better/easier/safer syntax, and transpile it into C++ : https://github.com/hsutter/cppfront/ |