The ros2 API sometimes has breaking changes in a new distro. I have had to fix compilation errors when switching to a new distro. So yes, in theory, the API can leave existing ones in place but that is not the case in practice. In this case, it does force change on everyone. On the other hand, a C++ version forces change under the cover but as an end user you won’t even notice it - you just recompile your code without having to change anything. You’re going to recompile anyway when switching to a new distro that supports the new C++ version and you’ll be fixing compile errors due to API changes not C++ version changes.

I’m not sure what the argument is against this other than the work it takes to qualify the ros2 core on a new version which I admit may not be trivial. Anyway, my original question was answered. It will happen at some time, but it is unclear when. Till then I have the option of using C++20 on my own packages by specifying the version to the compiler.

1 Like