In C++, there’s often multiple ways to refer to the same entity: aliases, inherited names, injected names, names that differ in qualification… Usually, if an entity has multiple names, which one you use won’t matter: you can use any of those synonymous names and the compiler won’t care. But each entity always has a uniquely “truest” name, privileged above all the other ways to refer to it. In some situations, in order to do a thing with an entity, you do actually need to call it b...| Arthur O’Dwyer
The other day I ran across some code like this: template struct Holder { T t_; explicit Holder() : t_() {} Holder(const Holder& rhs) : t_(rhs.t_) {} ~~~~ }; This was in an old codebase, which until recently had still been using GCC's `-Weffc++` to enforce C++98 idioms such as the explicitly non-defaulted copy constructor depicted above. > If you're still using `-Weffc++`, please, > [stop using it!](https://github.com/google/googletest/issues/898#issuecomment-332582070)| Arthur O’Dwyer