mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-19 16:19:37 +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>
|
template<typename Expression>
|
||||||
EIGEN_DEVICE_FUNC void construct(Expression& expr)
|
EIGEN_DEVICE_FUNC void construct(Expression& expr)
|
||||||
{
|
{
|
||||||
|
EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(PlainObjectType,Expression);
|
||||||
|
|
||||||
if(PlainObjectType::RowsAtCompileTime==1)
|
if(PlainObjectType::RowsAtCompileTime==1)
|
||||||
{
|
{
|
||||||
eigen_assert(expr.rows()==1 || expr.cols()==1);
|
eigen_assert(expr.rows()==1 || expr.cols()==1);
|
||||||
|
14
test/ref.cpp
14
test/ref.cpp
@ -13,7 +13,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TEST_ENABLE_TEMPORARY_TRACKING
|
#define TEST_ENABLE_TEMPORARY_TRACKING
|
||||||
|
#define TEST_CHECK_STATIC_ASSERTIONS
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
// test Ref.h
|
// test Ref.h
|
||||||
@ -255,6 +255,17 @@ void test_ref_overloads()
|
|||||||
test_ref_ambiguous(A, B);
|
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()
|
void test_ref()
|
||||||
{
|
{
|
||||||
for(int i = 0; i < g_repeat; i++) {
|
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_overloads() );
|
||||||
|
CALL_SUBTEST_7( test_ref_fixed_size_assert() );
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user