Sunteți pe pagina 1din 2

1)

Consteval creează o așa-numită funcție imediată. Fiecare invocare a unei funcții imediate creează o
constantă de timp de compilare. O funcție consteval este executată la compilare.

consteval int f() { return 42; }

consteval auto g() { return f; }

consteval int h(int (*p)() = g()) { return p(); }

constexpr int r = h();

constexpr auto e = g();

2)

#include <iostream>

consteval int sqr(int n) {

return n * n;

constexpr auto res1 = sqr(5);

constinit auto res2 = sqr(5);

int main() {

std::cout << "sqr(5): " << res1 << std::endl;

std::cout << "sqr(5): " << res2 << std::endl;

constinit thread_local auto res3 = sqr(5);

std::cout << "sqr(5): " << res3 << std::endl;


}

Specificatorul constinit declară o variabilă cu o durată de stocare statică sau de tip thread. Dacă o
variabilă este declarată cu constinit, declarația de inițializare a acesteia trebuie să fie aplicată cu
constinit.

Constinit nu poate fi utilizat împreună cu constexpr sau consteval. În cazul în care variabila declarată
este o referință, constinit este echivalent cu constexpr.

S-ar putea să vă placă și