// REQUIRED_ARGS: -preview=dip1000
// https://github.com/dlang/dmd/pull/9383
void test() @safe
{
    int[1] a = [1];
    cartesianProduct(a[]);
}
auto cartesianProduct(RR...)(RR ranges)
{
    static struct Result
    {
        RR current;
        void popFront() scope @safe
        {
            foreach (ref r; current)
            {
            }
        }
    }
    return Result(ranges);
}