Как в C ++ 20 std :: vector assign constexpr?
Учитывая, что текущее содержимое и размер вектора могут быть произвольно определены во время выполнения, и все содержимое должно быть уничтожено при вызове assign, как функция-член assign в C ++ 20 может быть constexpr, т.е. время компиляции?
Ответы
Нашел здесь свой ответ . Цитировать,
Функция constexpr не означает, что функция выполняется во время компиляции. В нем говорится, что функция может быть запущена во время компиляции. Функция constexpr также может запускать среду выполнения. Часто это вопрос компилятора и уровня оптимизации, если функции constexpr выполняются во время компиляции или выполнения.
Таким образом, в отличие от переменных constexpr, которые должны определяться во время компиляции, один вызов данной функции constexpr может выполняться во время компиляции, в зависимости от обстоятельств вызова (например, constexpr std :: vector), а другой - во время выполнения (например, a non-constexpr std :: vector).