On 04.07.2011 20:12, Zardoz wrote:
On Mon, 04 Jul 2011 19:52:10 +0200, simendsjo wrote:

On 04.07.2011 19:42, simendsjo wrote:

The "in" should be in a block of it's own:

T foo(T)(T a)
if(...) // notice no { here
in {
} body {
}

I of course mean that if should not create a new block.
Thanks !
I thought that the if () needs to make a block. :P

The if is called a template constrain: http://www.d-programming-language.org/template.html#Constraint

T foo(T)(T a) is a shorthand (I think) for

template foo(T) {
  T foo(T a) {
  }
}

The constraint refers to the template part:

template foo(T) if(is(T:real)) {
  T foo(T a) {
  }
}

Because the template only contain a single member, and it's named the same as the template, you can instantiate it directly as foo(1.2); If the function was named bar, you'd have to instantiate it yourself: foo!real.bar(1.2);

Reply via email to