Hello

struct WTable
{
...
    private enum opApply_body = q{
        if( smt )
        {
            foreach( f; 0 .. size-1 )
                foreach( t; f+1 .. size )
if( auto r = dlg(f,t,data[getIndex(f,t)]) ) return r;
        }
        else
        {
            foreach( f; 0 .. size )
                foreach( t; 0 .. size )
                {
                    if( f == t ) continue;
                    if( auto r = dlg(f,t,data[getIndex(f,t)]) )
                        return r;
                }
        }
        return 0;
    };

int opApply( int delegate(size_t,size_t,T val) dlg ) const { mixin( opApply_body ); } int opApply( int delegate(size_t,size_t,ref T val) dlg ) { mixin( opApply_body ); }
}

How I can rewrite this code without mixin's and with one (maybe inout) opApply?

Reply via email to