Inicialização de std :: initializer_list <std :: string_view>

Oct 30 2020

O seguinte programa

#include <initializer_list>
#include <string_view>

inline constexpr std::initializer_list<std::string_view> s = { "" };

int main() {}

compila com o Clang atual (12.0.0), mas não com o GCC atual (11.0.0 20201028). Com o GCC, ele produz o erro

prog.cc:4:67: error: modification of '<temporary>' is not a constant expression
    4 | inline constexpr std::initializer_list<std::string_view> s = { "" };
      |                                                                    ^

De [dcl.init.list / 5] e do fato de que o construtor string_view (char const *) é constexpr , presumo que o comportamento do Clang esteja certo aqui.

Isso está correto?

Respostas

1 xskxzr Nov 08 2020 at 08:54

Sim você está correto. É um bug do GCC .