Arm*_*yan 6 c++ user-defined-literals c++11
让我们考虑一下C++ 11标准中的以下引用(准确地说是N3376草案):
(2.14.8.5)
如果L是用户定义的字符串文字,则让str为没有ud-su ffi x的文字,并且len为str中的代码单元数(即,其长度不包括终止空字符).文字L被视为表格的调用
Run Code Online (Sandbox Code Playgroud)operator "" X (str , len )
对于所有其他类型的用户定义文字(浮点,整数,字符),即使文本本身作为字符串传递,也不会传递长度.例如:
42_zzz; // calls operator "" _zzz("42") and not operator "" _zzz("42", 2)
Run Code Online (Sandbox Code Playgroud)
为什么字符串和非字符串用户定义的文字之间存在区别?或者我应该说,为什么实现为UD字符串文字传递len?与其他文字一样,长度可以通过空终止来推断.我错过了什么?
对于字符串文字,可以合理地设想在字符串的序列中嵌入空字符,例如"a\0b".要允许实现使用整个字符串文字,即使存在嵌入的空字符,也需要知道文字的长度.用户定义的文字的其他形式不能包含嵌入的零字符.
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |