C++17

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
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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:

GCC Clang MSVC
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