Std का आरंभीकरण :: initializer_list <std :: string_view>

Oct 30 2020

निम्नलिखित कार्यक्रम

#include <initializer_list>
#include <string_view>

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

int main() {}

वर्तमान क्लैंग (12.0.0) के साथ संकलित करता है, लेकिन वर्तमान जीसीसी (11.0.0 20201028) के साथ नहीं। जीसीसी के साथ यह त्रुटि पैदा करता है

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

से [dcl.init.list / 5] और तथ्य यह है कि string_view (चार स्थिरांक *) निर्माता है constexpr , मुझे लगता है कि बजना के व्यवहार यहीं है।

क्या वो सही है?

जवाब

1 xskxzr Nov 08 2020 at 08:54

हाँ आप सही हैं। यह जीसीसी बग है ।