Boost logo

Boost :

Subject: Re: [boost] Heads up - string_ref landing
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2012-11-26 09:13:38


On Mon, Nov 26, 2012 at 5:48 PM, Daniel James <dnljms_at_[hidden]> wrote:
> 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
>>> mechanism.
>>
>> 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.

Why?

>> 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
> entirely.

That would mean that the range is limited to strings only. I'm not
sure this limitation is justified.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk