> Because they are all the consequence of holding it wrong, avoiding RAII solutions.
The reason why C++ is as popular as it is is in large part due to how easy it is to upgrade an existing C codebase in-place. Doing a complete RAII rewrite is at best a long term objective, if not often completely out of the question.
Acknowledging this reality means giving affordances like `defer` that allow upgrading C codebases and C++ code written in a C style easier without having to rewrite the universe. Because if you're asking me to rewrite code in a C++ style all in one go, I might not pick C++.
EDIT: It also occurs to me that destructors also have limitations. They can't throw, which means that if you encounter an issue in a dtor you often have to ignore it and hope it wasn't important.
I ran into this particular annoyance when I was writing my own stream abstractions - I had to hope that closing the stream in the dtor didn't run into trouble.
I'm already using Matrix for a number of open source communities. It's fine as far as it goes.
However, from a community space point of view, it seems to be more similar to IRC than Discord. Much like an IRC server, there's a public list of channels and you join them individually. There is voice and video chat, but as far as I can tell it's only person to person without any voice and video conferencing like Discord has, and I've never actually tried them to see how well they work.
Some organizations, such as Mozilla, run their own Matrix server in order to corral the community into one place, but more often than not I see communities creating a single channel on the primary matrix.org server, and "expand" by adding more channels, IRC style.
As an IRC replacement, I think it's perfect. But if you are expecting something more similar to Discord in terms of functionality, you'll likely be looking elsewhere. Stoat is what I see most frequently touted, but I can't speak to it personally.