Fix handling of temporary data passed as ref
See merge request oss/rotgen!44
This commit is contained in:
parent
8c66778d7e
commit
e4ae70d0c5
3 changed files with 75 additions and 26 deletions
|
|
@ -83,15 +83,40 @@ requires(N > 1)
|
|||
return -1;
|
||||
}
|
||||
|
||||
TTS_CASE("Reference overload on stroage order check")
|
||||
TTS_CASE("Reference overload on storage order check")
|
||||
{
|
||||
rotgen::matrix<float> mat_dyn(1, 3);
|
||||
rotgen::matrix<float, -1, 3, rotgen::ColMajor> mat_col(1, 3);
|
||||
rotgen::matrix<float, -1, 3, rotgen::RowMajor> mat_row(1, 3);
|
||||
using col3 = rotgen::matrix<float, -1, 3, rotgen::ColMajor>;
|
||||
using row3 = rotgen::matrix<float, -1, 3, rotgen::RowMajor>;
|
||||
|
||||
rotgen::matrixXf mat_dyn(1, 3);
|
||||
col3 mat_col(1, 3);
|
||||
row3 mat_row(1, 3);
|
||||
|
||||
TTS_EQUAL(f(mat_dyn), +2);
|
||||
|
||||
TTS_EQUAL(g<3>(mat_dyn), +1);
|
||||
TTS_EQUAL(g<3>(mat_col), +1);
|
||||
TTS_EQUAL(g<3>(mat_row), -1);
|
||||
|
||||
TTS_EQUAL(f(rotgen::map<rotgen::matrixXf, 1>(mat_dyn.data(), 1, 3)), +2);
|
||||
TTS_EQUAL(g<3>(rotgen::map<rotgen::matrixXf, 1>(mat_dyn.data(), 1, 3)), +1);
|
||||
TTS_EQUAL(g<3>(rotgen::map<col3, 1>(mat_dyn.data(), 1, 3)), +1);
|
||||
TTS_EQUAL(g<3>(rotgen::map<row3, 1>(mat_dyn.data(), 1, 3)), -1);
|
||||
|
||||
TTS_EQUAL(f(rotgen::map<rotgen::matrixXf, 1, rotgen::outer_stride<>>(
|
||||
mat_dyn.data(), 1, 3, rotgen::outer_stride<>{1})),
|
||||
+2);
|
||||
TTS_EQUAL(g<3>(rotgen::map<rotgen::matrixXf, 1, rotgen::outer_stride<>>(
|
||||
mat_dyn.data(), 1, 3, rotgen::outer_stride<>{1})),
|
||||
+1);
|
||||
TTS_EQUAL(g<3>(rotgen::map<col3, 1, rotgen::outer_stride<>>(
|
||||
mat_dyn.data(), 1, 3, rotgen::outer_stride<>{1})),
|
||||
+1);
|
||||
TTS_EQUAL(g<3>(rotgen::map<row3, 1, rotgen::outer_stride<>>(
|
||||
mat_dyn.data(), 1, 3, rotgen::outer_stride<>{1})),
|
||||
-1);
|
||||
|
||||
TTS_EQUAL(f(rotgen::extract(mat_dyn, 0, 0, 1, 3)), +2);
|
||||
TTS_EQUAL(g<3>(rotgen::extract(mat_dyn, 0, 0, 1, 3)), +1);
|
||||
TTS_EQUAL(g<3>(rotgen::extract(mat_col, 0, 0, 1, 3)), +1);
|
||||
TTS_EQUAL(g<3>(rotgen::extract(mat_row, 0, 0, 1, 3)), -1);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue