
On November 18, 2012 1:29:06 AM Mathias Gaunard <mathias.gaunard@ens-lyon.org> wrote:
On 16/11/12 15:50, Maxim Yanchenko wrote:
Mathias Gaunard <mathias.gaunard <at> ens-lyon.org> writes:
If this is all you need, just use plain references.
void f(std::string const&); f("Olaf");
does make a useless copy.
OK. I thought you were talking about Olaf's desire to have implicit conversion from std::string. For this we use just f(char_range::literal("Olaf"));
basic_string_ref<T> is meant to when being implicitly constructed from a T(&)[N] or T const* that it is null-terminated.
I don't even understand why people are still discussing this and making ridiculous proposals. If you want the above use boost::iterator_range<char*>.
There is no way to safely detect a string literal, so unless you want to strlen it anyway the construction has to be explicit.