Hello,
I am proposing that we switch Arrow C++ to require C++20.
C++20 will offer support for more C++ language and standard library
features, such as:
- concepts
- generic lambdas with explicit type parameters
- designated initializers
- calendar and timezone functions (currently, our Windows users need to
download the timezone database separately; this would not be required
anymore with C++20, IIUC)
- std::span (we currently use a backport)
- coroutines (not sure they are usable enough, though)
- various smaller improvements and additions
A decent level of C++20 support is available with these compiler
versions (see https://en.cppreference.com/w/cpp/compiler_support#cpp20
for details):
- gcc 10
- clang 10 to 19
- MSVC 19.28 (Visual Studio 2019) or 19.30 (Visual Studio 2022)
Switching to C++20 will happen in any case, the question is whether we
can do it now or we need to wait for a year or two.
There is an experimental PR to switch to C++20 and it shows that there
is no blocker for switching (a couple odd issues will have to be fixed:
https://github.com/apache/arrow/pull/45445
A more general issue has been opened separately:
https://github.com/apache/arrow/issues/45885
Are there any opinions on this?
Regards
Antoine.