C++0x Concepts - Dead?

Jarrett Billingsley jarrett.billingsley at gmail.com
Thu Jul 16 13:13:48 PDT 2009


On Thu, Jul 16, 2009 at 4:03 PM, Walter
Bright<newshound1 at digitalmars.com> wrote:
> BLS wrote:
>>
>> The current Template specialization implementation is doing a best fit
>> search anyway, so why constraints are not able to use the same mechanism. ?
>
> The template specialization method is based on types - but there's no way to
> look inside those types and specialize based on properties of those types.
> That's where constraints come in.
>
> Constraints use a completely different matching method than the type
> parameters do. It makes intuitive sense to logically separate them, rather
> than to mix them up.

Please, the last thing we need is to have *two* systems of template
specialization, one with best matching and one without.

I was thinking it'd be more intuitive if constraints - which are more
general - would be used to implement specialization.  That is,

template X(T: A, U: B)

would basically be syntactic sugar for

template X(T) if(is(T: A) && is(U: B))

Then you have only a single system of specialization and constraining
to worry about.  How would "best matching" work?  The compiler could
definitely be smart enough to pick apart the logical expression in the
constraint, I suppose, or constraints could be written as "if(c1, c2,
c3)" or something of the like.

Let's try to *simplify* metaprogramming and make things *orthogonal*
instead of tacking on features with no regard to the existing ones.


More information about the Digitalmars-d-announce mailing list