簡體   English   中英

將 constexpr char[] var 傳遞給 struct 的模板參數,然后使用 fmt 到 output 會拋出異常嗎?

[英]Pass a constexpr char[] var to template param of struct and then use fmt to output will throw an exception?

示例代碼

template<const char* str>
class MyStruct
{
public:
    void Print()
    {
        cout << fmt::format("{}", str);
    }
};

constexpr char szTest[] = "hello";

int main()
{
    MyStruct<szTest> info;
    info.Print();
    return 0;
}

實際上,此代碼在 function 'basic_string_view(const Char* s)' 中拋出異常,我嘗試將 constexpr 替換為 const,然后一切正常。 有誰知道為什么?

我想知道為什么不能在這里使用 constexpr,這是規則還是錯誤?

更多信息:

操作系統:Windows

IDE:vs2019 (16.11.18)

C++ 語言標准:C++20

fmt版本:9.1.0(std::format存在同樣的問題)

szTest是類型為const char*的參數的有效模板非類型參數,並且程序格式正確。

這是規則還是錯誤?

是的,這似乎是一個msvc linker 錯誤 gcc和clang執行程序都沒有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM