module issue16020;

alias F1 = const(int)(); const(int) f1(){return 42;}
static assert (is(F1 == typeof(f1)));

alias F2 = float(float); float f2(float p){return p;}
static assert (is(F2 == typeof(f2)));

alias F3 = void(); void f3(){}
static assert (is(F3 == typeof(f3)));

alias void F41() @safe;
alias F42 = void() @safe;
alias F43 = @safe void();
static assert (is(F41 == F42));
static assert (is(F43 == F42));

alias void F51() @system;
alias F52 = void() @safe;
static assert (!is(F51 == F52));

alias F61 = int() const shared;
alias int F62() const shared ;
alias F63 = const shared int();
static assert (is(F61 == F62));
static assert (is(F63 == F62));

alias F71 = int() immutable inout;
alias int F72() immutable inout;
alias F73 = immutable inout int();
static assert (is(F71 == F72));
static assert (is(F73 == F72));

alias FunTemplate(T) = void(T t);
alias Specialized = FunTemplate!int;
alias Compared = void(int);
static assert(is(Specialized == Compared));

void main() {}
