std::is_constant_evaluated из .">
⊗cpSpCxRt 412 of 696 menu

Проверка времени выполнения в 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 еще раз.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить