diff --git a/NEWS b/NEWS
index 8d90cc9c6..b641cad38 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,8 @@ ver 0.24 (not yet released)
- add option "mixramp_analyzer" to scan MixRamp tags on-the-fly
* tags
- new tag "Mood"
+* switch to C++20
+ - GCC 10 or clang 11 (or newer) recommended
ver 0.23.8 (not yet released)
diff --git a/doc/developer.rst b/doc/developer.rst
index 8cbc8c3b0..14a87950f 100644
--- a/doc/developer.rst
+++ b/doc/developer.rst
@@ -12,7 +12,7 @@ Code Style
* indent with tabs (width 8)
* don't write CPP when you can write C++: use inline functions and constexpr instead of macros
* comment your code, document your APIs
-* the code should be C++17 compliant, and must compile with :program:`GCC` 8 and :program:`clang` 5
+* the code should be C++20 compliant, and must compile with :program:`GCC` 10 and :program:`clang` 11
* all code must be exception-safe
* classes and functions names use CamelCase; variables are lower-case with words separated by underscore
diff --git a/doc/user.rst b/doc/user.rst
index 1dbb148cc..b9143b6bc 100644
--- a/doc/user.rst
+++ b/doc/user.rst
@@ -55,7 +55,7 @@ and unpack it (or `clone the git repository
In any case, you need:
-* a C++17 compiler (e.g. GCC 8 or clang 7)
+* a C++20 compiler (e.g. GCC 10 or clang 11)
* `Meson 0.56.0 `__ and `Ninja
`__
* Boost 1.58
diff --git a/meson.build b/meson.build
index ba650c428..f391f5789 100644
--- a/meson.build
+++ b/meson.build
@@ -6,8 +6,8 @@ project(
default_options: [
'c_std=c11',
'build.c_std=c11',
- 'cpp_std=c++17',
- 'build.cpp_std=c++17',
+ 'cpp_std=c++2a',
+ 'build.cpp_std=c++2a',
'warning_level=3',
# If we build those libraries as Meson subproject, they shall be