当我发现可以使用户定义的文字模板化时,我感到惊讶:
template <char ...C> std::string operator ""_s()
{
char arr[]{C...};
return arr;
}
// ...
std::cout << 123_s;
但是上述声明不适用于字符串字面量:
"123"_s
出现以下错误:
prog.cpp: 在函数 'int main()' 中:
prog.cpp:12:15: 错误:没有找到与 'operator""_s()' 匹配的函数
std::cout << "123"_s;prog.cpp:4:34: 注意:候选函数是:模板 std::string operator""_s()
template std::string operator ""_s()prog.cpp:4:34: 注意:模板参数推导/替换失败:
是否有一种方法可以使用模板化的用户定义字面量和字符串字面量?
<< foo_s;
,不需要添加引号使其失败。 - Jean-François Fabre