Template Models

Mixin that ensures a type models the desired signature of a structure

template Models(alias Sig, string file = __FILE__, int line = __LINE__) ;

Example

struct Sig {
    alias I = int;
    int x;
    float y;
    struct Inner { int a; struct X { int b; } }
    int f(int) { return 0; }
    enum X { one, two }
    union L { int a; }
}

struct Y {
    mixin Models!Sig;
    alias I = int;
    int x;
    float y;
    struct Inner { int a; struct X { int b; } }
    int f(int) { return 0; }
    enum X { one, two }
    union L { int a; }
}

static assert(isModelOf!(Y, Sig));