Compile-time Interfaces

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Nov 27 08:18:27 PST 2011


On 11/27/11 10:03 AM, Jacob Carlborg wrote:
> For the simpler cases an interface is easier to reason about. But yes,
> template constraints are more powerful.

I've reached the same conclusion. Symbolic interfaces explode quite 
quickly. Fortunately, the experimentation in that direction has been 
already done in the context of C++ concepts. We designed restricted 
templates as a simple method to address the same problem that C++ 
concepts do, and restricted templates have served D exceedingly well.

There are ways to address the issue "why did type X not satisfy 
constraint E on a template?" at both compiler and library level. The 
compiler could e.g. explain which expressions in a combination of 
conjunctions and disjunctions has failed. A library could define a 
catch-all function that issues the appropriate error message (though 
this is rather laborious). I personally think the compiler-based 
approach can be very fertile.


Andrei


More information about the Digitalmars-d mailing list