Проверка времени выполнения в C++
Проверка времени выполнения в
константной функции выполняется функцией
std::is_constant_evaluated из
<type_traits>.
Она возвращает истину, когда тело вычисляют на этапе компиляции, и ложь при обычном запуске. Запишем функцию с разными ветками и сравним вывод:
#include <iostream>
#include <type_traits>
constexpr int tag() {
if (std::is_constant_evaluated()) {
return 1;
} else {
std::cout << "runtime\n";
return 0;
}
}
int main() {
constexpr int at_build = tag();
std::cout << at_build << "\n";
tag();
return 0;
}
Напишите constexpr int mode
с std::is_constant_evaluated:
при компиляции возвращайте 10,
иначе печатайте "live" и возвращайте
20. Выведите constexpr
результат и вызовите функцию из main
еще раз.