This table lists C++14 and C++17 features and whether they can be used in Inkscape or not (yet). Add C++14 or C++17 features that you would like to use to the table, so that we know what to test for to increase the C++17 "allowance".
|std::make_unique<Foo>()||C++14||from 1.1||Replaces std::unique_ptr<Foo>(new Foo(…))|
|constexpr||C++14||from 1.1||Declares a variable as usable in a const expression|
|if constexpr||C++17||from 1.1||Guarantees the branches will be decided at compile-time|
|toxic feature of doom||NO||Never use this (in case we stumble upon C++14/C++17 features that we really don't like)|
We need to keep coordinated with the section on Distro Dependencies.
Also see this page:
__cplusplus is always
1 for GCC 4.6 that is used on Windows. So
#if __cplusplus < 201103L or variants does not work to choose between C++03 or C++11 code.
C++17 is well supported by all major compilers.
Compiler version when feature complete:
|C++17||7 (2017)||4 (2017) (5 for constexpr lambda expressions)||19.14 (2017)|
'*' Mostly complete '#' About half complete