Difference between revisions of "C++20"
Jump to navigation
Jump to search
(Expand some descriptions) |
|||
Line 14: | Line 14: | ||
| <code>std::lerp</code> || C++20 || style="background: lightgreen;" | from 1.4? || 11.0.3 || Linear interpolation. (ui/tools/pencil-tool.cpp) | | <code>std::lerp</code> || C++20 || style="background: lightgreen;" | from 1.4? || 11.0.3 || Linear interpolation. (ui/tools/pencil-tool.cpp) | ||
|- | |- | ||
| <code>std::bit_floor</code> || C++20 || style="background: lightgreen;" | from 1.4? || 11.0.3/13.0.0 || (helper/mathfns.h) | | <code>std::bit_floor</code> || C++20 || style="background: lightgreen;" | from 1.4? || 11.0.3/13.0.0 || Compute floor(log2(x)). (helper/mathfns.h) | ||
|- | |- | ||
| <code>Concepts</code> || C++20 || from 1.4? || 12.0.0 Partial || Safer templating. (ui/controller.h) | | <code>Concepts</code> || C++20 || from 1.4? || 12.0.0 Partial || Safer templating. (ui/controller.h) | ||
|- | |- | ||
| <code>Coroutines</code> || C++20 || || 10.0.1 Partial || (trace/trace.cpp) | | <code>Coroutines</code> || C++20 || || 10.0.1 Partial || Simpler asynchronous code. (trace/trace.cpp) | ||
|- | |- | ||
| <code>std::make_unique_for_overwrite</code> || C++20 || style="background: pink;" | || N/A || (util/pool.cpp) | | <code>std::make_unique_for_overwrite</code> || C++20 || style="background: pink;" | || N/A || Don't zero arrays allocated using std::make_unique. (util/pool.cpp) | ||
|- | |- | ||
| <code>Ranges</code> || C++20 || from 1.4? || ? || for (init; decl : expr). (ui/dialog/swatches.cpp) | | <code>Ranges</code> || C++20 || from 1.4? || ? || for (init; decl : expr). (ui/dialog/swatches.cpp) | ||
|- | |- | ||
| <code>Structural | | <code>[https://stackoverflow.com/a/60244416/5075760 Structural templates]</code> || 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 | 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). |
Revision as of 03:25, 2 September 2023
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).