Overhauling the notion of output range
Steven Schveighoffer
schveiguy at yahoo.com
Mon Jul 12 05:44:41 PDT 2010
On Mon, 12 Jul 2010 02:21:25 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> On 07/12/2010 12:45 AM, Philippe Sigaud wrote:
>> On Mon, Jul 12, 2010 at 03:17, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org <mailto:SeeWebsiteForEmail at erdani.org>>
>> wrote:
>>
>> In related news, there's been this burning desire regarding a
>> lightweight output range defined as simply a delegate that accepts
>> const(char)[]. That range is an output range all right, and the way
>> you output to it is by simply calling the delegate!
>> <http://www.dsource.org/projects/phobos/browser/trunk/phobos/std/range.d#L227>
>>
>> http://www.dsource.org/projects/phobos/browser/trunk/phobos/std/range.d#L227
>>
>>
>> It's still early where I live, but... For the callable case, why just
>> accepting E[] instead of any range with E as element? Though, thinking
>> about it, I right now have no idea how to put that into a template
>> constraint, given only R and E.
>>
>> Hmm...
>
> Good point. I haven't thought of it that way - I used arrays as a lingua
> franca buffer. Your suggestion is interesting. I see a risk of infinite
> regression in writing the constraint, but the idea warrants more
> discussion.
Wait, isn't a delegate that accepts a type T an output range of type T?
Why does the argument have to be an array/range?
For example, a delegate that accepts a string is a range of strings, is it
not? Or do you consider it a range of immutable(char)?
For example, I'd expect to be able to use a push_back delegate on an
array-type of integers as an output range.
-Steve
More information about the Digitalmars-d
mailing list