簡體   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