On 02/03/2011 01:17 PM, Lars T. Kyllingstad wrote:
Why the reluctance to use template constraints?  They're so flexible! :)

I cannot stand the "is()" idiom/syntax ;-) Dunno why. Would happily get rid of it in favor of type-classes (built eg as an extension to current interfaces). For instance, instead of:

    void func (T) (T t)
        if (is(someConstraint1) && is(someConstraint2))
    {
        ...
    }

use:

    void func (SomeTypeClass T) (T t)
    {
        ...
    }

For instance (untested):

    void func (T) (T t)
        if (isInputRange(T) && is(ElementType!T == E))
-->
    void func (InputRange!E T) (T t)

where InputRange is a (templated) interface / type-class.

Type-class checks on /type/ /template/ parameters (as opposed to type checks on regular value parameters) would be performed structurally (as opposed to nominally). D knows how to do this, since that's what it needs to perform when checking is() constraints.

Denis
--
_________________
vita es estrany
spir.wikidot.com

Reply via email to