C++20

From Inkscape Wiki
Revision as of 03:25, 2 September 2023 by PBS (talk | contribs) (Expand some descriptions)
Jump to navigation Jump to search

See also C++11, C++17.

Some things that will be interesting to use once C++20 is common:

Feature Since Can use? Apple Clang Comment
std::span C++20 from 1.3? 11.0.3 Handle buffers like standard library containers without risk of overflow.
std::format C++20 N/A Better and more efficient formatting of strings.
std::lerp C++20 from 1.4? 11.0.3 Linear interpolation. (ui/tools/pencil-tool.cpp)
std::bit_floor C++20 from 1.4? 11.0.3/13.0.0 Compute floor(log2(x)). (helper/mathfns.h)
Concepts C++20 from 1.4? 12.0.0 Partial Safer templating. (ui/controller.h)
Coroutines C++20 10.0.1 Partial Simpler asynchronous code. (trace/trace.cpp)
std::make_unique_for_overwrite C++20 N/A Don't zero arrays allocated using std::make_unique. (util/pool.cpp)
Ranges C++20 from 1.4? ? for (init; decl : expr). (ui/dialog/swatches.cpp)
Structural templates C++20 from 1.4? ? Allow instances of arbitrary literal classes as template parameters. (display/drawing.cpp)

As of 1 September 2023, the CI runners for macOS are using Apple Clang 13.1.6 (ARM) and Apple Clang 14.0.0 (Intel64).