diff options
author | Gael Guennebaud <g.gael@free.fr> | 2015-03-06 17:51:31 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2015-03-06 17:51:31 +0100 |
commit | 14a5f135a32eed85033a5061d96e2d45e23d50aa (patch) | |
tree | b37adad9cfbfb8cd2cfd951518acd95fdd7780b6 /test/ref.cpp | |
parent | d23fcc0672d9edd917cfca0e32ea6d14300b492b (diff) |
bug #969: workaround abiguous calls to Ref using enable_if.
Diffstat (limited to 'test/ref.cpp')
-rw-r--r-- | test/ref.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/ref.cpp b/test/ref.cpp index b9470213c..fbe2c450f 100644 --- a/test/ref.cpp +++ b/test/ref.cpp @@ -228,6 +228,28 @@ void call_ref() VERIFY_EVALUATION_COUNT( call_ref_7(c,c), 0); } +typedef Matrix<double,Dynamic,Dynamic,RowMajor> RowMatrixXd; +int test_ref_overload_fun1(Ref<MatrixXd> ) { return 1; } +int test_ref_overload_fun1(Ref<RowMatrixXd> ) { return 2; } +int test_ref_overload_fun1(Ref<MatrixXf> ) { return 3; } + +int test_ref_overload_fun2(Ref<const MatrixXd> ) { return 4; } +int test_ref_overload_fun2(Ref<const MatrixXf> ) { return 5; } + +// See also bug 969 +void test_ref_overloads() +{ + MatrixXd Ad, Bd; + RowMatrixXd rAd, rBd; + VERIFY( test_ref_overload_fun1(Ad)==1 ); + VERIFY( test_ref_overload_fun1(rAd)==2 ); + + MatrixXf Af, Bf; + VERIFY( test_ref_overload_fun2(Ad)==4 ); + VERIFY( test_ref_overload_fun2(Ad+Bd)==4 ); + VERIFY( test_ref_overload_fun2(Af+Bf)==5 ); +} + void test_ref() { for(int i = 0; i < g_repeat; i++) { @@ -248,4 +270,6 @@ void test_ref() CALL_SUBTEST_5( ref_matrix(MatrixXi(internal::random<int>(1,10),internal::random<int>(1,10))) ); CALL_SUBTEST_6( call_ref() ); } + + CALL_SUBTEST_7( test_ref_overloads() ); } |