diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2016-09-18 12:42:15 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2016-11-02 15:12:04 +0100 |
commit | 44861dcbfeee041223c4aac1ee075e92fa4daa01 (patch) | |
tree | 6dfdfd9637846a7aedd71ace97d7d2ad366496d7 /eigen/failtest | |
parent | f3fe458b9e0a29a99a39d47d9a76dc18964b6fec (diff) |
update
Diffstat (limited to 'eigen/failtest')
37 files changed, 583 insertions, 0 deletions
diff --git a/eigen/failtest/CMakeLists.txt b/eigen/failtest/CMakeLists.txt new file mode 100644 index 0000000..cadc6a2 --- /dev/null +++ b/eigen/failtest/CMakeLists.txt @@ -0,0 +1,54 @@ +message(STATUS "Running the failtests") + +ei_add_failtest("failtest_sanity_check") + +ei_add_failtest("block_nonconst_ctor_on_const_xpr_0") +ei_add_failtest("block_nonconst_ctor_on_const_xpr_1") +ei_add_failtest("block_nonconst_ctor_on_const_xpr_2") +ei_add_failtest("transpose_nonconst_ctor_on_const_xpr") +ei_add_failtest("diagonal_nonconst_ctor_on_const_xpr") + +ei_add_failtest("const_qualified_block_method_retval_0") +ei_add_failtest("const_qualified_block_method_retval_1") +ei_add_failtest("const_qualified_transpose_method_retval") +ei_add_failtest("const_qualified_diagonal_method_retval") + +ei_add_failtest("map_nonconst_ctor_on_const_ptr_0") +ei_add_failtest("map_nonconst_ctor_on_const_ptr_1") +ei_add_failtest("map_nonconst_ctor_on_const_ptr_2") +ei_add_failtest("map_nonconst_ctor_on_const_ptr_3") +ei_add_failtest("map_nonconst_ctor_on_const_ptr_4") + +ei_add_failtest("map_on_const_type_actually_const_0") +ei_add_failtest("map_on_const_type_actually_const_1") +ei_add_failtest("block_on_const_type_actually_const_0") +ei_add_failtest("block_on_const_type_actually_const_1") +ei_add_failtest("transpose_on_const_type_actually_const") +ei_add_failtest("diagonal_on_const_type_actually_const") + +ei_add_failtest("ref_1") +ei_add_failtest("ref_2") +ei_add_failtest("ref_3") +ei_add_failtest("ref_4") +ei_add_failtest("ref_5") + +ei_add_failtest("partialpivlu_int") +ei_add_failtest("fullpivlu_int") +ei_add_failtest("llt_int") +ei_add_failtest("ldlt_int") +ei_add_failtest("qr_int") +ei_add_failtest("colpivqr_int") +ei_add_failtest("fullpivqr_int") +ei_add_failtest("jacobisvd_int") +ei_add_failtest("eigensolver_int") +ei_add_failtest("eigensolver_cplx") + +if (EIGEN_FAILTEST_FAILURE_COUNT) + message(FATAL_ERROR + "${EIGEN_FAILTEST_FAILURE_COUNT} out of ${EIGEN_FAILTEST_COUNT} failtests FAILED. " + "To debug these failures, manually compile these programs in ${CMAKE_CURRENT_SOURCE_DIR}, " + "with and without #define EIGEN_SHOULD_FAIL_TO_BUILD.") +else() + message(STATUS "Failtest SUCCESS: all ${EIGEN_FAILTEST_COUNT} failtests passed.") + message(STATUS "") +endif() diff --git a/eigen/failtest/block_nonconst_ctor_on_const_xpr_0.cpp b/eigen/failtest/block_nonconst_ctor_on_const_xpr_0.cpp new file mode 100644 index 0000000..40b8201 --- /dev/null +++ b/eigen/failtest/block_nonconst_ctor_on_const_xpr_0.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Block<Matrix3d,3,3> b(m,0,0); +} + +int main() {} diff --git a/eigen/failtest/block_nonconst_ctor_on_const_xpr_1.cpp b/eigen/failtest/block_nonconst_ctor_on_const_xpr_1.cpp new file mode 100644 index 0000000..ef6d537 --- /dev/null +++ b/eigen/failtest/block_nonconst_ctor_on_const_xpr_1.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Block<Matrix3d> b(m,0,0,3,3); +} + +int main() {} diff --git a/eigen/failtest/block_nonconst_ctor_on_const_xpr_2.cpp b/eigen/failtest/block_nonconst_ctor_on_const_xpr_2.cpp new file mode 100644 index 0000000..43f18ae --- /dev/null +++ b/eigen/failtest/block_nonconst_ctor_on_const_xpr_2.cpp @@ -0,0 +1,16 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + // row/column constructor + Block<Matrix3d,3,1> b(m,0); +} + +int main() {} diff --git a/eigen/failtest/block_on_const_type_actually_const_0.cpp b/eigen/failtest/block_on_const_type_actually_const_0.cpp new file mode 100644 index 0000000..009bebe --- /dev/null +++ b/eigen/failtest/block_on_const_type_actually_const_0.cpp @@ -0,0 +1,16 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(){ + Matrix3f m; + Block<CV_QUALIFIER Matrix3f>(m, 0, 0, 3, 3).coeffRef(0, 0) = 1.0f; +} + +int main() {} diff --git a/eigen/failtest/block_on_const_type_actually_const_1.cpp b/eigen/failtest/block_on_const_type_actually_const_1.cpp new file mode 100644 index 0000000..4c3e93f --- /dev/null +++ b/eigen/failtest/block_on_const_type_actually_const_1.cpp @@ -0,0 +1,16 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(){ + MatrixXf m; + Block<CV_QUALIFIER MatrixXf, 3, 3>(m, 0, 0).coeffRef(0, 0) = 1.0f; +} + +int main() {} diff --git a/eigen/failtest/colpivqr_int.cpp b/eigen/failtest/colpivqr_int.cpp new file mode 100644 index 0000000..db11910 --- /dev/null +++ b/eigen/failtest/colpivqr_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/QR" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + ColPivHouseholderQR<Matrix<SCALAR,Dynamic,Dynamic> > qr(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/const_qualified_block_method_retval_0.cpp b/eigen/failtest/const_qualified_block_method_retval_0.cpp new file mode 100644 index 0000000..a6bd5fe --- /dev/null +++ b/eigen/failtest/const_qualified_block_method_retval_0.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Block<Matrix3d,3,3> b(m.block<3,3>(0,0)); +} + +int main() {} diff --git a/eigen/failtest/const_qualified_block_method_retval_1.cpp b/eigen/failtest/const_qualified_block_method_retval_1.cpp new file mode 100644 index 0000000..ef40c24 --- /dev/null +++ b/eigen/failtest/const_qualified_block_method_retval_1.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Block<Matrix3d> b(m.block(0,0,3,3)); +} + +int main() {} diff --git a/eigen/failtest/const_qualified_diagonal_method_retval.cpp b/eigen/failtest/const_qualified_diagonal_method_retval.cpp new file mode 100644 index 0000000..809594a --- /dev/null +++ b/eigen/failtest/const_qualified_diagonal_method_retval.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Diagonal<Matrix3d> b(m.diagonal()); +} + +int main() {} diff --git a/eigen/failtest/const_qualified_transpose_method_retval.cpp b/eigen/failtest/const_qualified_transpose_method_retval.cpp new file mode 100644 index 0000000..2d7f19c --- /dev/null +++ b/eigen/failtest/const_qualified_transpose_method_retval.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Transpose<Matrix3d> b(m.transpose()); +} + +int main() {} diff --git a/eigen/failtest/diagonal_nonconst_ctor_on_const_xpr.cpp b/eigen/failtest/diagonal_nonconst_ctor_on_const_xpr.cpp new file mode 100644 index 0000000..76398a2 --- /dev/null +++ b/eigen/failtest/diagonal_nonconst_ctor_on_const_xpr.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Diagonal<Matrix3d> d(m); +} + +int main() {} diff --git a/eigen/failtest/diagonal_on_const_type_actually_const.cpp b/eigen/failtest/diagonal_on_const_type_actually_const.cpp new file mode 100644 index 0000000..d4b2fd9 --- /dev/null +++ b/eigen/failtest/diagonal_on_const_type_actually_const.cpp @@ -0,0 +1,16 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(){ + MatrixXf m; + Diagonal<CV_QUALIFIER MatrixXf>(m).coeffRef(0) = 1.0f; +} + +int main() {} diff --git a/eigen/failtest/eigensolver_cplx.cpp b/eigen/failtest/eigensolver_cplx.cpp new file mode 100644 index 0000000..c2e21e1 --- /dev/null +++ b/eigen/failtest/eigensolver_cplx.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/Eigenvalues" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR std::complex<double> +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + EigenSolver<Matrix<SCALAR,Dynamic,Dynamic> > eig(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/eigensolver_int.cpp b/eigen/failtest/eigensolver_int.cpp new file mode 100644 index 0000000..eda8dc2 --- /dev/null +++ b/eigen/failtest/eigensolver_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/Eigenvalues" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + EigenSolver<Matrix<SCALAR,Dynamic,Dynamic> > eig(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/failtest_sanity_check.cpp b/eigen/failtest/failtest_sanity_check.cpp new file mode 100644 index 0000000..769fa94 --- /dev/null +++ b/eigen/failtest/failtest_sanity_check.cpp @@ -0,0 +1,5 @@ +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +This is just some text that won't compile as a C++ file, as a basic sanity check for failtest. +#else +int main() {} +#endif diff --git a/eigen/failtest/fullpivlu_int.cpp b/eigen/failtest/fullpivlu_int.cpp new file mode 100644 index 0000000..e9d2c6e --- /dev/null +++ b/eigen/failtest/fullpivlu_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/LU" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + FullPivLU<Matrix<SCALAR,Dynamic,Dynamic> > lu(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/fullpivqr_int.cpp b/eigen/failtest/fullpivqr_int.cpp new file mode 100644 index 0000000..d182a7b --- /dev/null +++ b/eigen/failtest/fullpivqr_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/QR" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + FullPivHouseholderQR<Matrix<SCALAR,Dynamic,Dynamic> > qr(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/jacobisvd_int.cpp b/eigen/failtest/jacobisvd_int.cpp new file mode 100644 index 0000000..12790ae --- /dev/null +++ b/eigen/failtest/jacobisvd_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/SVD" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + JacobiSVD<Matrix<SCALAR,Dynamic,Dynamic> > qr(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/ldlt_int.cpp b/eigen/failtest/ldlt_int.cpp new file mode 100644 index 0000000..243e457 --- /dev/null +++ b/eigen/failtest/ldlt_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/Cholesky" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + LDLT<Matrix<SCALAR,Dynamic,Dynamic> > ldlt(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/llt_int.cpp b/eigen/failtest/llt_int.cpp new file mode 100644 index 0000000..cb02065 --- /dev/null +++ b/eigen/failtest/llt_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/Cholesky" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + LLT<Matrix<SCALAR,Dynamic,Dynamic> > llt(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/map_nonconst_ctor_on_const_ptr_0.cpp b/eigen/failtest/map_nonconst_ctor_on_const_ptr_0.cpp new file mode 100644 index 0000000..d75686f --- /dev/null +++ b/eigen/failtest/map_nonconst_ctor_on_const_ptr_0.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER float *ptr){ + Map<Matrix3f> m(ptr); +} + +int main() {} diff --git a/eigen/failtest/map_nonconst_ctor_on_const_ptr_1.cpp b/eigen/failtest/map_nonconst_ctor_on_const_ptr_1.cpp new file mode 100644 index 0000000..eda134d --- /dev/null +++ b/eigen/failtest/map_nonconst_ctor_on_const_ptr_1.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER float *ptr, DenseIndex size){ + Map<ArrayXf> m(ptr, size); +} + +int main() {} diff --git a/eigen/failtest/map_nonconst_ctor_on_const_ptr_2.cpp b/eigen/failtest/map_nonconst_ctor_on_const_ptr_2.cpp new file mode 100644 index 0000000..06b4b62 --- /dev/null +++ b/eigen/failtest/map_nonconst_ctor_on_const_ptr_2.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER float *ptr, DenseIndex rows, DenseIndex cols){ + Map<MatrixXf> m(ptr, rows, cols); +} + +int main() {} diff --git a/eigen/failtest/map_nonconst_ctor_on_const_ptr_3.cpp b/eigen/failtest/map_nonconst_ctor_on_const_ptr_3.cpp new file mode 100644 index 0000000..830f6f0 --- /dev/null +++ b/eigen/failtest/map_nonconst_ctor_on_const_ptr_3.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER float *ptr, DenseIndex rows, DenseIndex cols){ + Map<MatrixXf, Aligned, InnerStride<2> > m(ptr, rows, cols, InnerStride<2>()); +} + +int main() {} diff --git a/eigen/failtest/map_nonconst_ctor_on_const_ptr_4.cpp b/eigen/failtest/map_nonconst_ctor_on_const_ptr_4.cpp new file mode 100644 index 0000000..c3e8c95 --- /dev/null +++ b/eigen/failtest/map_nonconst_ctor_on_const_ptr_4.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER +#else +#define CV_QUALIFIER const +#endif + +using namespace Eigen; + +void foo(const float *ptr, DenseIndex rows, DenseIndex cols){ + Map<CV_QUALIFIER MatrixXf, Unaligned, OuterStride<> > m(ptr, rows, cols, OuterStride<>(2)); +} + +int main() {} diff --git a/eigen/failtest/map_on_const_type_actually_const_0.cpp b/eigen/failtest/map_on_const_type_actually_const_0.cpp new file mode 100644 index 0000000..8cb6aa0 --- /dev/null +++ b/eigen/failtest/map_on_const_type_actually_const_0.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(float *ptr){ + Map<CV_QUALIFIER MatrixXf>(ptr, 1, 1).coeffRef(0,0) = 1.0f; +} + +int main() {} diff --git a/eigen/failtest/map_on_const_type_actually_const_1.cpp b/eigen/failtest/map_on_const_type_actually_const_1.cpp new file mode 100644 index 0000000..04e067c --- /dev/null +++ b/eigen/failtest/map_on_const_type_actually_const_1.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(float *ptr){ + Map<CV_QUALIFIER Vector3f>(ptr).coeffRef(0) = 1.0f; +} + +int main() {} diff --git a/eigen/failtest/partialpivlu_int.cpp b/eigen/failtest/partialpivlu_int.cpp new file mode 100644 index 0000000..98ef282 --- /dev/null +++ b/eigen/failtest/partialpivlu_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/LU" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + PartialPivLU<Matrix<SCALAR,Dynamic,Dynamic> > lu(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/qr_int.cpp b/eigen/failtest/qr_int.cpp new file mode 100644 index 0000000..ce200e8 --- /dev/null +++ b/eigen/failtest/qr_int.cpp @@ -0,0 +1,14 @@ +#include "../Eigen/QR" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define SCALAR int +#else +#define SCALAR float +#endif + +using namespace Eigen; + +int main() +{ + HouseholderQR<Matrix<SCALAR,Dynamic,Dynamic> > qr(Matrix<SCALAR,Dynamic,Dynamic>::Random(10,10)); +} diff --git a/eigen/failtest/ref_1.cpp b/eigen/failtest/ref_1.cpp new file mode 100644 index 0000000..8b798d5 --- /dev/null +++ b/eigen/failtest/ref_1.cpp @@ -0,0 +1,18 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void call_ref(Ref<VectorXf> a) { } + +int main() +{ + VectorXf a(10); + CV_QUALIFIER VectorXf& ac(a); + call_ref(ac); +} diff --git a/eigen/failtest/ref_2.cpp b/eigen/failtest/ref_2.cpp new file mode 100644 index 0000000..0b779cc --- /dev/null +++ b/eigen/failtest/ref_2.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +using namespace Eigen; + +void call_ref(Ref<VectorXf> a) { } + +int main() +{ + MatrixXf A(10,10); +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD + call_ref(A.row(3)); +#else + call_ref(A.col(3)); +#endif +} diff --git a/eigen/failtest/ref_3.cpp b/eigen/failtest/ref_3.cpp new file mode 100644 index 0000000..f46027d --- /dev/null +++ b/eigen/failtest/ref_3.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +using namespace Eigen; + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +void call_ref(Ref<VectorXf> a) { } +#else +void call_ref(const Ref<const VectorXf> &a) { } +#endif + +int main() +{ + VectorXf a(10); + call_ref(a+a); +} diff --git a/eigen/failtest/ref_4.cpp b/eigen/failtest/ref_4.cpp new file mode 100644 index 0000000..6c11fa4 --- /dev/null +++ b/eigen/failtest/ref_4.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +using namespace Eigen; + +void call_ref(Ref<MatrixXf,0,OuterStride<> > a) {} + +int main() +{ + MatrixXf A(10,10); +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD + call_ref(A.transpose()); +#else + call_ref(A); +#endif +} diff --git a/eigen/failtest/ref_5.cpp b/eigen/failtest/ref_5.cpp new file mode 100644 index 0000000..846d527 --- /dev/null +++ b/eigen/failtest/ref_5.cpp @@ -0,0 +1,16 @@ +#include "../Eigen/Core" + +using namespace Eigen; + +void call_ref(Ref<VectorXf> a) { } + +int main() +{ + VectorXf a(10); + DenseBase<VectorXf> &ac(a); +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD + call_ref(ac); +#else + call_ref(ac.derived()); +#endif +} diff --git a/eigen/failtest/transpose_nonconst_ctor_on_const_xpr.cpp b/eigen/failtest/transpose_nonconst_ctor_on_const_xpr.cpp new file mode 100644 index 0000000..4223e7f --- /dev/null +++ b/eigen/failtest/transpose_nonconst_ctor_on_const_xpr.cpp @@ -0,0 +1,15 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(CV_QUALIFIER Matrix3d &m){ + Transpose<Matrix3d> t(m); +} + +int main() {} diff --git a/eigen/failtest/transpose_on_const_type_actually_const.cpp b/eigen/failtest/transpose_on_const_type_actually_const.cpp new file mode 100644 index 0000000..d0b7d0d --- /dev/null +++ b/eigen/failtest/transpose_on_const_type_actually_const.cpp @@ -0,0 +1,16 @@ +#include "../Eigen/Core" + +#ifdef EIGEN_SHOULD_FAIL_TO_BUILD +#define CV_QUALIFIER const +#else +#define CV_QUALIFIER +#endif + +using namespace Eigen; + +void foo(){ + MatrixXf m; + Transpose<CV_QUALIFIER MatrixXf>(m).coeffRef(0, 0) = 1.0f; +} + +int main() {} |