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.

Reply via email to