On Sunday, 3 January 2021 at 18:55:58 UTC, sighoya wrote:
```
alias matcherSignature(T:matcherSignature!T) = Matcher (T[] matchers...);
```

Yet, it is right:

```
alias matcherSignature(T:matcherSignature!T) = Matcher function(T[] matchers...);
```

But it didn't work likewise, you have to instantiate it infinitely in nesting order.

I think you either need some kind of nominalism to state matcherSignature!T exists for any T or you need to end it after a certain depth:

```
struct theEnd {}

template matcherSignature(T) if (T==matcherSignature!T || T==theEnd)
{
    Matcher function(T[] matchers...) fp;
}
```

Reply via email to