Subject: Re: [boost] Heads up - string_ref landing
From: Daniel James (dnljms_at_[hidden])
Date: 2012-11-26 08:48:01
On 26 November 2012 13:26, Andrey Semashev <andrey.semashev_at_[hidden]> wrote:
> On Mon, Nov 26, 2012 at 4:52 PM, Daniel James <dnljms_at_[hidden]> wrote:
>> On 26 November 2012 11:56, Andrey Semashev <andrey.semashev_at_[hidden]> wrote:
>>> The problem with std::string is the same as with string_ref - it
>>> doesn't support implicit construction from an arbitrary range, so my
>>> examples with custom string types would still not work.
>> Shouldn't construction from an arbitrary range be explicit? Arbitrary
>> implicit conversions are problematic. To get implicit construction
>> from third party strings, I'd use some sort of explicit customisation
> If the string_ref or range type (let's call it contiguous_range< const
> char* >)
A string isn't the same thing as a range of characters.
> is not implicitly convertible from other string types then it
> is useless for use cases I pointed out. The thing is to make
> interfaces transparently support any string types.
That's why I suggested a customisation mechanism. Something would
allow you to indicate that a third party type is a string and, if
necessary, how to get a string_ref from it. Perhaps an ADL hook, or a
template class that is specialized for strings, or something else