Difference between revisions of "C++20"
Jump to navigation
Jump to search
(Expand some descriptions) |
(Class types as non-type template parameters -> partial) |
||
Line 24: | Line 24: | ||
| <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>[https://stackoverflow.com/a/60244416/5075760 Structural templates]</code> || C++20 || from 1.4? || | | <code>[https://stackoverflow.com/a/60244416/5075760 Structural templates]</code> || C++20 || from 1.4? || Partial || 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). | 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:34, 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? | Partial | 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).