Starting with the December 2020 development cycle (after the anticipated release of MAME 0.227), we will switch to compiling MAME as C++17. Compiler and standard library support for C++17 is now sufficiently widespread that we can update and benefit from the new functionality. The minimum compiler versions and corresponding standard library versions with adequate C++17 support are GCC/libstdc++ 7, clang/llvm/libc++ 6, and Visual C++/MSVCPRT 19.14 (Visual Studio 2017 15.7). This will be an increase in the required clang/llvm/libc++ version.
A small number of C++17 standard library features that are not yet widely supported will not be permitted. The following standard library features will not be permitted until support is more widespread:
- Parallelism TS (P0024R2)
- Updating references to C standard to C11 (P0063R3)
- Elementary string conversions (P0067R5)
- Splicing maps and sets (P0083R3)
- Hardware interference size (P0154R1)
- File system library (P0218R1)
- Polymorphic memory resources (P0220R1)
- Mathematical special functions (P0226R1, ISO/IEC 29124:2010)
- std::shared_ptr/std::weak_ptr with array support (P0414R2)
- std::is_aggregate (LWG2911)