Difference between revisions of "User:Dydzio/cpp standard upgrade"

From VCMI Project Wiki
Jump to: navigation, search
Line 1: Line 1:
As of 22.06.2019 - linux debian will receive next stable version in few version and its GCC will upgrade from 6.3 to 8.3. Ubuntu 18.04 supports GCC 7.4, alex uses GCC 7.3.
+
As of 22.06.2019 - linux debian will receive next stable version in few version and its GCC will upgrade from 6.3 to 8.3. Ubuntu 18.04 supports GCC 7.4, [[https://wiki.vcmi.eu/User:AVS AVS]] currently uses GCC 7.3.
  
 
Scripting branch breaks VS 2015 compatibility by (bug/lack of C++ feature/whatever) in ERM parser. VS 2017 (MSVC 19.1x) has way better C++ support and there is almost no reason to still use 2015.
 
Scripting branch breaks VS 2015 compatibility by (bug/lack of C++ feature/whatever) in ERM parser. VS 2017 (MSVC 19.1x) has way better C++ support and there is almost no reason to still use 2015.
  
If we assume 7.3 as minimal supported GCC version then on GCC part we can use:
+
If we assume GCC 7.3 (GCC 7) as minimal supported GCC version then on GCC part we can use:
  
 
- full C++14
 
- full C++14

Revision as of 18:59, 22 June 2019

As of 22.06.2019 - linux debian will receive next stable version in few version and its GCC will upgrade from 6.3 to 8.3. Ubuntu 18.04 supports GCC 7.4, [AVS] currently uses GCC 7.3.

Scripting branch breaks VS 2015 compatibility by (bug/lack of C++ feature/whatever) in ERM parser. VS 2017 (MSVC 19.1x) has way better C++ support and there is almost no reason to still use 2015.

If we assume GCC 7.3 (GCC 7) as minimal supported GCC version then on GCC part we can use:

- full C++14

- almost full C++17, with exception of few features listed below, with optional examples of related standard library elements in braces:

  • Polymorphic memory resources (<memory_resource>)
  • C++17 should refer to C11 instead of C99
  • Elementary string conversions (std::to_chars, std::from_chars, chars_format)
  • Standardization of Parallelism TS
  • File system library (std::filesystem)
  • Template argument deduction for class templates - only partial support, probably conforms to v1 / draft paper?
  • std::char_traits<char> and std::char_traits<wchar_t> in constant expressions.

There is no guarantee this is everything, travis CI should help. If somebody uses "not fully supported" feature on purpose he should let others know in PR description / slack etc.

Some sources: