The post seems like it is focused on some ancient version of C++, multiple of these papercuts aren't even valid today.
* You can just write = default for those methods often enough, and having to implement these is extremely rare
* use [[nodiscard]] for your silly bool get_message return
* C++ does in fact support multiple return types via structured bindings, or just use a struct
None of this is really what is wrong with C++, the real issues are that everyone uses a different build system and a different way of sharing code.