Kla*_*aus 8 c++ user-defined-literals
对于用户定义的字符串文字,如果我使用以下形式的定义,则给定的字符串保证null终止吗?我知道第二个参数计数给出的大小没有任何终止,如果有的话.
void operator"" _x( const char* n, size_t s)
{
std::cout << "String: " << s << " Len: " << s << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用这个版本的定义,我看到没有空终止字符!
template <class T, T... Chrs>
void operator""_s()
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
用户定义的字符串文字,是否为字符串null终止?
Run Code Online (Sandbox Code Playgroud)void operator"" _x( const char* n, size_t s)
是.字符串文字以null结尾并n指向此类字符串文字.
如果我使用这个版本的定义,我看到没有空终止字符!
Run Code Online (Sandbox Code Playgroud)template <class T, T... Chrs> void operator""_s()
该标准不允许使用字符串文字模板.有一份文件N3599建议将其添加到标准中,它是针对C++ 14的,但没有达成共识,它还没有成为标准的一部分.GCC和Clang至少似乎已将其作为语言扩展实现.
实际上,文字运算符模板不会将null字符作为其参数之一.
提案N3599:
其余参数是字符串文字中的代码单元(不包括其终止空字符).
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |