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

From VCMI Project Wiki
Jump to: navigation, search
(Created page with "As of 22.06.2019 linux debian will receive next stable version soon and its GCC will upgrade from 6.3 to 8.3. Ubuntu 18.04 supports GCC 7.4, alex uses GCC 7.3. Scripting bran...")
 
Line 17: Line 17:
 
* std::char_traits<char> and std::char_traits<wchar_t> in constant expressions.
 
* 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.
 
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:
 +
* https://en.cppreference.com/w/cpp/compiler_support
 +
* https://gcc.gnu.org/projects/cxx-status.html#cxx1z

Revision as of 18:56, 22 June 2019

As of 22.06.2019 linux debian will receive next stable version soon and its GCC will upgrade from 6.3 to 8.3. Ubuntu 18.04 supports GCC 7.4, alex 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 7.3 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: