繁体   English   中英

std::initializer_list 的初始化<std::string_view>

[英]Initialization of std::initializer_list<std::string_view>

下面的程序

#include <initializer_list>
#include <string_view>

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

int main() {}

使用当前的 Clang (12.0.0) 编译,但不使用当前的 GCC (11.0.0 20201028) 编译。 使用 GCC 会产生错误

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(char const*)构造函数是constexpr的事实,我假设 Clang 的行为就在这里。

那是对的吗?

是的,你是对的。 这是一个GCC 错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM