cpp / expert
Snippet
Kompilierzeit-Konstanten mit consteval-Funktionen
Das Schlüsselwort consteval (C++20) gibt an, dass eine Funktion eine Kompilierzeit-Konstante erzeugen muss. Im Gegensatz zu constexpr, das auch zur Laufzeit evaluiert werden kann, garantiert consteval (Immediate Functions), dass die Logik während der Kompilierung ausgeführt wird, andernfalls schlägt der Build fehl.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>consteval int fast_power(int base, int exp) {int res = 1;for(int i = 0; i < exp; ++i) res *= base;return res;}int main() {constexpr int val = fast_power(2, 10); // Guaranteed compile-time// int runtime_val = 5;// int err = fast_power(runtime_val, 2); // Error: not a constant expressionstd::cout << val;}
Erklärung
1
consteval int fast_power(int base, int exp)
Definiert eine Immediate Function, die nur mit konstanten Ausdrücken aufgerufen werden kann.
2
constexpr int val = fast_power(2, 10);
Das Ergebnis wird direkt in das Binärformat eingebettet, was zu null Overhead zur Laufzeit führt.