// https://bugzilla.gdcproject.org/show_bug.cgi?id=15
// { dg-do compile }

template map(fun...)
{
    auto map(Range)(Range r)
    {
        return MapResult!(fun, Range)(r);
    }
}

private struct MapResult(alias fun, Range)
{
    Range _input;

    this(Range input)
    {
        _input = input;
    }
}

class B
{
    class A { }
    A a;
}

class C
{
    void visit(B b)
    {
        auto as = [b.a];
        map!((d) { return d; })(as);
    }
}