From Inkscape Wiki
Revision as of 11:04, 13 April 2020 by LinkMauve (talk | contribs) (Copy the C++11 page and update for C++17 to be the baseline.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Usage status

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".

Feature Since Can use? Comment
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)

Platform status

We need to keep coordinated with the section on Distro Dependencies.

Also see this page:

Note that __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)
C++20 10* 10* 19.22#

'*' Mostly complete '#' About half complete