IMHO it's been incoherent from the earliest times.
The lame exceptions without 'finally', and no consistency in exception types. Then the desperate attempts to make all resources into objects, except that practically no OS calls bothered with this.
The overloading of the shift operators in the standard library. Indeed, operator overloading itself is just a recipe for abuse. You read 'a=b+c' and you literally have no clue what that means.
Multiple inheritance with the brittle semantics.
The awful STL, with its multi-kB error messages (the allocator of the trait of the string of the tree of map of king Caractacus doesn't match ...)
There's no wonder the 'obfuscated C competition' never happened with C++ given the fact it's unreadable, right out of the box.