It’s worse than useless. This guideline says that one should not write code in the straightforward, idiomatic way, and should instead write ugly code. If the language spec is such that operator -> can’t have a sensible signature, then FIX IT. Or teach the analyzer to recognize the idiomatic use. (And the * approach still eventually sticks a raw pointer into this.)
I think this one is problematic too:
> Using the union keyword produces an error. … It was replaced by std::variant, which is safer.
Union is horribly unsafe, but at least union identifies its fields by name. Variant identifies its fields by position (unergonomic, error prone, and horrible for refactoring) or by type (unpleasant or useless when the type has no name or an unstable name, and even worse when two choices have the same type).
C++ needs an actual sum type, and variant isn’t it. Sorry.