structs inheriting from and implementing interfaces

Basile B. b2.temp at gmx.com
Fri Dec 29 13:14:07 UTC 2017


On Friday, 29 December 2017 at 13:08:38 UTC, rikki cattermole 
wrote:
> On 29/12/2017 12:59 PM, rjframe wrote:
>> On Fri, 29 Dec 2017 12:39:25 +0000, Nicholas Wilson wrote:
>> 
>>> On Friday, 29 December 2017 at 12:03:59 UTC, Mike Franklin 
>>> wrote:
>>>
>>> The problem is that interfaces are a runtime thing (e.g. you 
>>> can cast a
>>> class to an interface)
>>> structs implement compile time interfaces via template duck 
>>> typing
>>> (usually enforced via an if()).
>>> you could probably write a wrapper that introspected an 
>>> interface and
>>> enforced that all members were implemented.
>> 
>> I've actually thought about doing this to get rid of a bunch 
>> of if
>> qualifiers in my function declarations. `static interface {}` 
>> compiles but
>> doesn't [currently] seem to mean anything to the compiler, but 
>> could be a
>> hint to the programmer that nothing will directly implement 
>> it; it's a
>> compile-time interface. This would provide a more generic way 
>> of doing
>> stuff like `isInputRange`, etc.
>
> Or we could get signatures, which are even better still!

I was about to answer that interfaces could be used to define 
duck types conformity models but this would be a poor and useless 
addition, indeed, compared to signatures.


More information about the Digitalmars-d-learn mailing list