diff --git a/dlib/matrix/matrix_utilities.h b/dlib/matrix/matrix_utilities.h index f2c91baed..1c68869be 100644 --- a/dlib/matrix/matrix_utilities.h +++ b/dlib/matrix/matrix_utilities.h @@ -1423,27 +1423,30 @@ namespace dlib // ---------------------------------------------------------------------------------------- - template - struct op_rowm : has_destructive_aliasing + struct op_rowm { - const static long NR = 1; - const static long NC = EXP::NC; - typedef typename EXP::type type; - typedef typename EXP::mem_manager_type mem_manager_type; - template - static type apply ( const M& m, long row, long, long c) - { return m(row,c); } + template + struct op : has_destructive_aliasing + { + const static long NR = 1; + const static long NC = EXP::NC; + typedef typename EXP::type type; + typedef typename EXP::mem_manager_type mem_manager_type; + template + static type apply ( const M& m, long row, long, long c) + { return m(row,c); } - template - static long nr (const M& m) { return 1; } - template - static long nc (const M& m) { return m.nc(); } + template + static long nr (const M& m) { return 1; } + template + static long nc (const M& m) { return m.nc(); } + }; }; template < typename EXP > - const matrix_exp,long,op_rowm > > rowm ( + const matrix_exp,long,op_rowm> > rowm ( const matrix_exp& m, long row ) @@ -1456,33 +1459,36 @@ namespace dlib << "\n\trow: " << row ); - typedef matrix_scalar_binary_exp,long,op_rowm > exp; + typedef matrix_scalar_binary_exp,long,op_rowm> exp; return matrix_exp(exp(m,row)); } // ---------------------------------------------------------------------------------------- - template - struct op_colm : has_destructive_aliasing + struct op_colm { - const static long NR = EXP::NR; - const static long NC = 1; - typedef typename EXP::type type; - typedef typename EXP::mem_manager_type mem_manager_type; - template - static type apply ( const M& m, long col, long r, long) - { return m(r,col); } + template + struct op : has_destructive_aliasing + { + const static long NR = EXP::NR; + const static long NC = 1; + typedef typename EXP::type type; + typedef typename EXP::mem_manager_type mem_manager_type; + template + static type apply ( const M& m, long col, long r, long) + { return m(r,col); } - template - static long nr (const M& m) { return m.nr(); } - template - static long nc (const M& m) { return 1; } + template + static long nr (const M& m) { return m.nr(); } + template + static long nc (const M& m) { return 1; } + }; }; template < typename EXP > - const matrix_exp,long,op_colm > > colm ( + const matrix_exp,long,op_colm> > colm ( const matrix_exp& m, long col ) @@ -1495,7 +1501,7 @@ namespace dlib << "\n\tcol: " << col ); - typedef matrix_scalar_binary_exp,long,op_colm > exp; + typedef matrix_scalar_binary_exp,long,op_colm> exp; return matrix_exp(exp(m,col)); }