Let's consider the following quote from the C++11 standard (the N3376 draft, to be precise):
(2.14.8.5)
If L is a user-defined-string-literal, let str be the literal without its ud-suffix and let len be the number of code units in str (i.e., its length excluding the terminating null character). The literal L is treated as a call of the form
operator "" X (str , len )
Whereas for all the other types of user-defined literals (floating-point, integer, character) the length is never passed along even if the literal itself is passed as a string. For example:
42_zzz; // calls operator "" _zzz("42") and not operator "" _zzz("42", 2)
Why is there this distinction between string and non-string user-defined literals? Or should I say, why does the implementation pass len for UD string literals? The length, just as in case of other literals, could be deduced by null-termination. What am I missing?
\0
. – Mat