无法识别C++文字运算符模板

wim*_*aan 3 c++ literals

为什么不识别以下文字运算符模板?

template<char... Chars>
constexpr int operator"" _p(){
    return 0;
}

int main()
{
    int  fs1 = "123"_p;
}
Run Code Online (Sandbox Code Playgroud)

更新: 感谢我现在使用的答案:

#include <avr/pgmspace.h>

template<typename C, C... CC>
struct PgmString {
    static constexpr const char* str(){
        return &data[0];
    }
    static constexpr const char data[] PROGMEM = {CC..., '\0'};
};
template<typename C, C... CC>
constexpr const char PgmString<C, CC...>::data[] PROGMEM;

template<typename C, C... CC>
constexpr PgmString<C, CC...> operator"" _pgm(){
    return PgmString<C, CC...>();
}
Run Code Online (Sandbox Code Playgroud)

这会将字符串放入AVR微控制器的闪存中.但是如果我将文字字符串长度增加一个字符,则使用的闪存大小会增加两(!)个字节.

Jar*_*d42 6

gcc/clang有扩展名允许:

template<typename Char, Char... Cs>
constexpr int operator"" _p(){
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后

int main()
{
    int  fs1 = "123"_p;
}
Run Code Online (Sandbox Code Playgroud)


Ker*_* SB 5

你期望的文字形式不存在.只有整数和浮动文字才有模板形式; 字符串和字符文字不.