Initialisierung von std :: initializer_list <std :: string_view>
Oct 30 2020
Das folgende Programm
#include <initializer_list>
#include <string_view>
inline constexpr std::initializer_list<std::string_view> s = { "" };
int main() {}
Kompiliert mit aktuellem Clang (12.0.0), jedoch nicht mit aktuellem GCC (11.0.0 20201028). Mit GCC wird der Fehler erzeugt
prog.cc:4:67: error: modification of '<temporary>' is not a constant expression
4 | inline constexpr std::initializer_list<std::string_view> s = { "" };
| ^
Aufgrund von [dcl.init.list / 5] und der Tatsache, dass der Konstruktor string_view (char const *) constexpr ist, gehe ich davon aus, dass Clangs Verhalten hier richtig ist.
Ist das korrekt?
Antworten
1 xskxzr Nov 08 2020 at 08:54
Ja du hast Recht. Es ist ein GCC-Fehler .