Fork me on GitHub

Keeping up with C++

16 Oct 2020

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)