[gdal-dev] [External] : Updating requirements to C++20 for GDAL 3.13 ?
Fengting Chen
fengting.chen at oracle.com
Wed Dec 17 08:10:12 PST 2025
I am still using gcc 8.5 that comes with OS which only supports up to C++17 (with some feature not working), and upgrading OS and gcc is out of my control. If we decide to update GDAL build to C++20, I suggest making GDAL build backward compatible to at least to C++17 or C++11.
Thanks,
Fengting
Confidential- Oracle Internal
From: gdal-dev <gdal-dev-bounces at lists.osgeo.org> on behalf of Even Rouault via gdal-dev <gdal-dev at lists.osgeo.org>
Date: Tuesday, December 16, 2025 at 5:48 PM
To: gdal-dev at lists.osgeo.org <gdal-dev at lists.osgeo.org>
Subject: [External] : [gdal-dev] Updating requirements to C++20 for GDAL 3.13 ?
Hi,
any thoughts on :
1) updating our requirements to build GDAL to C++20 ?
2) and making use of it in our exported C++ headers ? (thus requiring
C++ consumers of our API to also be C++20)
Our current situation is C++17 required to build GDAL, and our C++
exported headers are C++11 compatible (except some newer ones like
gdalalgorithm_cpp.h, and some bits in )
We already have 2 (optional) dependencies requiring C++20: Poppler and
PDFium. The next version of libarrow/libparquet will also require
C++20. Note that C++20 is currenly only enabled in GDAL in the drivers
whose dependencies require it.
C++20 should not be an issue with the recent gcc/clang/MSVC. It would
exclude the old-old-Ubuntu LTS 20.04 whose gcc 9 has only very partial
support for it, but 20.04 standard support ended a few months ago, so
not really relevant to consider for new GDAL version. I'm not totally
sure about Ubuntu 22.04. It has partial support with its default gcc 11,
and improved one with gcc 12 that is also available. At the time GDAL
3.13 will be released, Ubuntu 26.04 will be released, so 24.04 will be
old-LTS, and 22.04 old-old-LTS so discarding it if it becomes too much
of an inconvenience seems fine to me.
A few things that might be interesting in C++20 for our purposes:
- bit manipulation offered by <bit>
- std::span , particularly when bridging C and C++ API and passing
non-constant size arrays around
- defaulted C++20 == operator
- std::string/string_view::starts_with/ends_with (finally !)
- container.contains() (finally !)
Even
--
https://urldefense.com/v3/__http://www.spatialys.com__;!!ACWV5N9M2RV99hQ!Jpqes3GN7WRXd_nHPWdDTsrk-BQuwBKfwkmtqrv_Iwtgn0zL2-ZufgnX_2Z6UM3EEWGyR4glcTCJdPdoEgsgAyJv$
My software is free, but my time generally not.
_______________________________________________
gdal-dev mailing list
gdal-dev at lists.osgeo.org
https://urldefense.com/v3/__https://lists.osgeo.org/mailman/listinfo/gdal-dev__;!!ACWV5N9M2RV99hQ!Jpqes3GN7WRXd_nHPWdDTsrk-BQuwBKfwkmtqrv_Iwtgn0zL2-ZufgnX_2Z6UM3EEWGyR4glcTCJdPdoEpu8ZfZ7$
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20251217/ffaa99fc/attachment-0001.htm>
More information about the gdal-dev
mailing list