// https://issues.dlang.org/show_bug.cgi?id=23598
alias AliasSeq(a...) = a;
static if (1)
{
template sort(alias f, a...)
{
    static if (a.length > 0)
    {
        alias x = f!(a[0]);
        alias sort = a;
    }
    else
        alias sort = a;
}
alias SortedItems = sort!(isDependencyOf, String);
enum isDependencyOf(Item) = Item.DirectDependencies.length == 0;
struct String
{
    alias DirectDependencies = AliasSeq!();
    enum l = SortedItems.length; // (3)
}
}
/*****************************************************/
static if (1)
{
enum x = 1;
enum y = 2;
template f(T)
{
    alias b = int;
    static if (x)
    {
        alias c = x;
    }
    else
    {
        alias c = y;
    }
    static if (is(typeof(c)))
    {
    }
    else
    {
        static assert(0);
    }
}
void g()
{
    int x = f!int.c;
}
}
/*****************************************************/
template forward(args...)
{
    template fwd(alias arg)
    {
        alias fwd = arg;
    }
    alias Result = AliasSeq!();
    static foreach (arg; args)
        Result = AliasSeq!(Result, fwd!arg);
    static if (Result.length == 1)
        alias forward = Result[0];
    else
        alias forward = Result;
}
void func(int i, int j)
{
    func(forward!(i, j));
}