
On Thu, Dec 13, 2012 at 7:05 PM, Gottlob Frege <gottlobfrege@gmail.com>wrote:
On Thu, Dec 13, 2012 at 5:20 AM, Rob Stewart <robertstewart@comcast.net
wrote:
It is the logical interpretation. It indicates whether the string is non-empty. I don't see any other generally useful interpretation, do
you?
Qt's QString has both empty() and isNull() and they are not always the same. Basically empty() is a zero-byte string, but null is a never-been-set-or-allocated string. [snip]
Somewhat like optional<string>.
That's how I'd spell it. [...] For string_ref, it could mean the difference between these 2 string_refs, assuming a ptr+size implementation:
{ ptr != 0, size == 0 } and { ptr == 0, size == hopefully_zero }
Right. And I want to note that it does matter. At least for std::string, whose constructor basic_string(const charT* s, size_type n, const Allocator& a = Allocator()); explicitly requires that `s` is be a non-null pointer (even if n == 0). -- Yakov