Como é C ++ 20 std :: vector assign constexpr?

Sep 03 2020

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

3 metamorphosis Sep 03 2020 at 11:26

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).