Заставить функцию constexpr оцениваться во время выполнения?C++

Программы на C++. Форум разработчиков
Anonymous
Заставить функцию constexpr оцениваться во время выполнения?

Сообщение Anonymous »

Рассмотрим следующий сценарий:

Код: Выделить всё

template 
constexpr auto computeValue() {
// ...
}

void funcA() {
static constexpr auto value_a = computeValue();  // should be at compile time
// ...
}

void funcB() {
static const auto value_b = computeValue();  // should be at runtime
// ...
}
В моем сценарии вычисленияValue — это дорогостоящее вычисление, которое невозможно вычислить во время компиляции из-за ошибки нехватки памяти в моей системе. Однако его можно запускать в течение приемлемого периода времени во время выполнения на одном и том же компьютере. ComputeValue не имеет этой проблемы, поэтому оно вычисляется во время компиляции в funcA.
Проблема в том, что компилятор все еще пытается вычислить ComputeValue() во время компиляции, несмотря на то, что я пропустил constexpr, и впоследствии ему не хватает памяти. Есть ли способ заставить его оставить эти вычисления для оценки во время выполнения?

Подробнее здесь: https://stackoverflow.com/questions/733 ... at-runtime

Вернуться в «C++»