On 03/15/2015 08:47 AM, "Marc =?UTF-8?B?U2Now7x0eiI=?= <schue...@gmx.net>" wrote:

> Should this work?
>
>      struct V(string s) {
>      }
>
>      struct S(int U) {
>          V!"xyz" x;
>          alias x this;
>      }
>
>      void main() {
>          S!10 a;
>          static assert(is(a : V!Args, Args...));
>      }
>
> With DMD Git master, the static assert() fails. Should it? Am I doing
> something wrong? How can I test whether something is implicitly
> convertible to any instance of a particular template?

There is no way other than checking for compile-time duck typing (see the implementations of isInputRange and others).

One reason is that the compiler does not have the concept of "an instance of a template". Templates are for code generation and only the end-result (i.e. S!10) lives as a concept when compiling.

Ali

Reply via email to