mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-16 14:49:39 +08:00
Add static assertion for fixed sizes Ref<>
This commit is contained in:
parent
f6be7289d7
commit
f7d17689a5
@ -95,6 +95,8 @@ protected:
|
||||
template<typename Expression>
|
||||
EIGEN_DEVICE_FUNC void construct(Expression& expr)
|
||||
{
|
||||
EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(PlainObjectType,Expression);
|
||||
|
||||
if(PlainObjectType::RowsAtCompileTime==1)
|
||||
{
|
||||
eigen_assert(expr.rows()==1 || expr.cols()==1);
|
||||
|
14
test/ref.cpp
14
test/ref.cpp
@ -13,7 +13,7 @@
|
||||
#endif
|
||||
|
||||
#define TEST_ENABLE_TEMPORARY_TRACKING
|
||||
|
||||
#define TEST_CHECK_STATIC_ASSERTIONS
|
||||
#include "main.h"
|
||||
|
||||
// test Ref.h
|
||||
@ -255,6 +255,17 @@ void test_ref_overloads()
|
||||
test_ref_ambiguous(A, B);
|
||||
}
|
||||
|
||||
void test_ref_fixed_size_assert()
|
||||
{
|
||||
Vector4f v4;
|
||||
VectorXf vx(10);
|
||||
VERIFY_RAISES_STATIC_ASSERT( Ref<Vector3f> y = v4; (void)y; );
|
||||
VERIFY_RAISES_STATIC_ASSERT( Ref<Vector3f> y = vx.head<4>(); (void)y; );
|
||||
VERIFY_RAISES_STATIC_ASSERT( Ref<const Vector3f> y = v4; (void)y; );
|
||||
VERIFY_RAISES_STATIC_ASSERT( Ref<const Vector3f> y = vx.head<4>(); (void)y; );
|
||||
VERIFY_RAISES_STATIC_ASSERT( Ref<const Vector3f> y = 2*v4; (void)y; );
|
||||
}
|
||||
|
||||
void test_ref()
|
||||
{
|
||||
for(int i = 0; i < g_repeat; i++) {
|
||||
@ -277,4 +288,5 @@ void test_ref()
|
||||
}
|
||||
|
||||
CALL_SUBTEST_7( test_ref_overloads() );
|
||||
CALL_SUBTEST_7( test_ref_fixed_size_assert() );
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user