Como é C ++ 20 std :: vector assign constexpr?
Dado que o conteúdo atual e o tamanho de um vetor podem ser determinados aleatoriamente em tempo de execução, e todo o conteúdo terá que ser destruído ao chamar assign, como a função de membro assign do C ++ 20 pode ser constexpr ie. tempo de compilação?
Respostas
Encontrei minha resposta aqui . Citar,
Ser uma função constexpr não significa que a função seja executada em tempo de compilação. Ele diz que a função tem potencial para ser executada em tempo de compilação. Uma função constexpr também pode executar um tempo de execução. Freqüentemente, é uma questão do compilador e do nível de otimização se uma função constexpr é executada em tempo de compilação ou tempo de execução.
Portanto, ao contrário das variáveis constexpr, que devem ser determináveis em tempo de compilação, uma chamada de uma determinada função constexpr pode ser executada em tempo de compilação, dependendo da circunstância da chamada (por exemplo, a constexpr std :: vector) e outra em tempo de execução (por exemplo, um não constexpr std :: vector).