Qt 与 constexpr 字符串文字

Sil*_*cer 6 c++ qt string-literals constexpr

有没有办法在 Qt 中定义静态 constexpr 字符串文字成员?即类似以下内容:

class X
{
   static constexpr QString tag = "mytag";
};
Run Code Online (Sandbox Code Playgroud)

Sil*_*cer 8

我按照 Jesper 在他的评论中推荐的操作,使用了 QLatin1String。但我通过一个小帮助器类使用它来避免 QLatin1String 中的 strlen() 调用:

struct ConstLatin1String : public QLatin1String
{
    constexpr ConstLatin1String(const char* const s) : 
        QLatin1String(s, static_cast<int>(std::char_traits<char>::length(s))) {}
};
Run Code Online (Sandbox Code Playgroud)

这允许执行以下操作:

static constexpr ConstLatin1String mystring = "foo";
Run Code Online (Sandbox Code Playgroud)