CodeBlanks Logo Icon CodeBlanks

consteval

C++20 consteval ile anlık fonksiyon öğrenirsin.

consteval

consteval (C++20) bir immediate function (anında fonksiyon) tanımlar. Bu fonksiyon mutlaka derleme zamanında değerlendirilmelidir. Örnek: consteval int square(int x) { return x * x; }.

constexpr int s = square(5); derleme zamanında 25 üretir. Ancak int n = readInput(); int r = square(n); derleme hatası verir: consteval, çalışma zamanı argümanı reddeder. constexpr'in aksine consteval esnek değildir, katıdır.

consteval vs constexpr

consteval ve constexpr arasındaki fark esnekliktir. constexpr fonksiyon hem derleme hem çalışma zamanında çalışabilir; consteval ise yalnızca derleme zamanında.

Bir constexpr fonksiyonu consteval'e çevirirsen, eski çalışma zamanı çağrıları derleme hatası verir. consteval, derleme zamanı garantisi istediğinde kullanılır: şifreleme tabloları, sabit yapılandırma, format dizeleri. Hata erken yakalanır; çalışma zamanı maliyeti sıfır olur.

Uygulama consteval square yaz

consteval int square(int x) yaz; gövdesi return x * x;. main içinde constexpr int s = square(6); tanımla ve std::cout << s; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// consteval square fonksiyonunu buraya tanımla

int main() {
    // s sabitini tanımla ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

consteval int square(int x) {
    return x * x;
}

int main() {
    constexpr int s = square(6);
    std::cout << s;
    return 0;
}

Beklenen çıktı

36

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 consteval fonksiyonu çalışma zamanı değişkeniyle çağırırsan ne olur?

main.cpp
consteval int square(int x) { return x * x; }
int n = readInput();
int r = square(n);
  • Çalışma zamanında çalışır
  • Uyarı verilir ama geçer
  • Derleme hatası verir Doğru cevap
  • Otomatik constexpr'e dönüşür

Açıklama: consteval, çalışma zamanı argümanını reddeder; derleme hatası verir.

2 consteval gövdesini tamamla

Soru
consteval int doubleIt(int x) { return x * ____; }
Cevap
consteval int doubleIt(int x) { return x * 2; }

Açıklama: x * 2 değerin iki katını verir.

3 Anahtar kelimeyi özelliğine eşle

Kavram Anlamı
consteval Her zaman derleme zamanı
constexpr Derleme veya çalışma
constinit Statik başlatma
if constexpr Derleme zamanı dal

Uzman bölümündeki tüm dersler