For Ice 3.8, the min C++ standard for our entire C++ source base should be c++17. As a result, we can use c++17 features (including standard library features such as std::optional) anywhere without conditional code.
This does not mean we always build everything with -std:c++17.
For Ice 3.8, the min C++ standard for our entire C++ source base should be c++17. As a result, we can use c++17 features (including standard library features such as std::optional) anywhere without conditional code.
This does not mean we always build everything with -std:c++17.
I propose that with each compiler we build with the highest stable -std option: c++17, c++20, c++23 ... the highest stable std with a stable ABI. See for example: https://devblogs.microsoft.com/cppblog/msvc-cpp20-and-the-std-cpp20-switch/
This way, we can use newer feature in the code base with conditionals. And we'll get warnings in the event we use features deprecated in c++20/23 etc.