++Phobos

Meta jared771 at gmail.com
Fri Oct 18 16:14:26 UTC 2019


On Friday, 18 October 2019 at 15:56:24 UTC, jmh530 wrote:
> On Friday, 18 October 2019 at 15:12:45 UTC, Meta wrote:
>> 
>>
>> Not necessarily. I haven't tried this myself, but I think you 
>> could get pretty far with UDAs and some template magic. What 
>> I'm thinking:
>>
>> [snip]
>
> I don't understand this line:
> @given!(implements!(R, ForwardRange),
>         implements!(inheritImpl!(ForwardRange, MapResult, R), 
> ForwardRange))

I wrote that in response to Rikki's assertion:
"This unfortunately still ties the implementation itself to the 
interface. Which goes against DbI."

Just some spitballing on how DbI could harmoniously co-exist with 
Atila's concepts library.


> I guess I still don't understand why you prefer the implements 
> with interfaces rather than the concepts library's versions of 
> isInputRange/isForwardRange/etc. What does this version add to 
> the static if version (assuming phobos's isInputRange, etc., 
> were replaced with the concepts version?

I don't necessarily, but it's good to have options. I think it 
would be very nice if the concepts library were as easy as 
`import std.range.interfaces; @implements(InputRange, 
MyCoolRangeType)`, because then the friction for using it is 
reduced down to almost 0. I also just like the cleanliness of 
separating the interface from the implementation, which 
isInputRange also allows, but not in as clean a manner.


More information about the Digitalmars-d mailing list