Ternick
@Ternick

Создание случайной строки в момент компиляции?

Я уяснил для себя новый тип функций constexpr, который выполняется на стадии компиляции, но тут такая штука, что функции типа constexpr не выполняют в своём теле функции у которых тип не constexpr.
То есть я из функции с типом constexpr я не смогу вызвать ни MessageBox, ни rand.
В интернете пишут, что нужно единственный образ получить псевдослучайное число брать за основу макросы(__TIME__, __TIMESTAMP__ и т.д.). Так оно и есть или можно решить этот вопрос ?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@res2001
Developer, ex-admin
1.Текущий timestamp часто берут для инициализации стандартного С/С++ генератора случайных чисел.
Пример можно найти, например тут: https://en.cppreference.com/w/cpp/numeric/random/srand

2.Вам придется реализовать свой собственный constexpr rand(), т.к. стандартный не constexpr.

3.Вам не нужно в принципе вызывать MessageBox и любые подобные функции на стадии компиляции программы.
constexpr функции выполняются компилятором, поэтому на них накладываются достаточно серьезные ограничения. Когда программа исполняется вместо вызова constexpr функции уже стоит ранее вычисленное компилятором значение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
fzfx
@fzfx
18,5 дм
Функция, которая выполняется на стадии компиляции, не может содержать в себе код, который не способен выполняться на стадии компиляции, поскольку это препятствовало бы выполнению функции на стадии компиляции.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
MaxiBooking Москва
от 160 000 ₽
Telezon Красноярск
от 50 000 до 70 000 ₽
Vineti (Armenia) Ереван
от 190 000 до 240 000 ₽
22 сент. 2020, в 13:33
3000 руб./за проект
22 сент. 2020, в 13:16
1200 руб./за проект