Remix.run Logo
▲ zagal 2 hours ago

I only used it for bare-metal embedded and Linux user space where efficiency was important.

Some features are nice. Some arrived too late, like std::optional in C++17 [0] or std::expected in C++23 [1], and some features requires too deep knowledge of the language, like std::move unable to optimize for containers of structs without "noexcept" in their constructors. [2]

But honestly, the reason why I don't enjoy it is unrelated to the features added to each new standard. It's the build system. I just want to cross compile easily, add sanitizers to testing, and the minimal third party libraries I may need. I think I don't have to explain here how complicated it can get when you have to use CMake/Meson/Bazel, compared to other build systems.

[0] https://en.cppreference.com/cpp/utility/optional

[1] https://en.cppreference.com/cpp/utility/expected

[2] https://0xghost.dev/blog/std-move-deep-dive/