Заставить функцию 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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