Re: [eigen] Feature request - Prevent dynamic resizing of a matrix |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Feature request - Prevent dynamic resizing of a matrix
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Wed, 28 Jan 2009 14:45:36 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=QS6QoIAiutou2lxmrZMMQYOs226rDpSUBEm24wRJwHE=; b=FvJwxbmxbUeSX8VUFdf2aXqudnVEsqctwh063D9tefMvGqf9QHRbgwhFxS5h+SByPu rge2MVa5+uoslJof7s/tvxduzF7EvnksvXh7mXCHW1F3HqtfoMu539CN25GTYi4MZMbb pEA+zv0vWsq6AoLGq3REKEJ1lWjHQ8uB8OHt8=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=h6q8sdmlhmE9ihWsG+p2IZLZwwlc9FtTYkEpbxM5HkQbcaChYLm0se7B2KJjtlOOWD KV88tbd6UTE6k9u96J2VgXXFWUddJkyl2r0tPphUWxMKk2/EtZAWbCHRpqjgVgV3ghjD kS8z70h4lJYJoCS8+7oI9YxZTf2XuU1WMrlAM=
OK, this has been a tough decision. Let's recall the arguments on both sides.
In favor of automatic resizing:
1) This is more practical for the majority
2) This is the usual behavior of objects in C++ and in the C++ STL
3) Because this is what STL containers assume, it's almost required in
order to allow convenient usage of STL containers with Eigen types
Against automatic resizing:
1) Exactly what you say. Indeed automatic resizing can hide nasty bugs.
So the default behavior will stay as it is right now, but what you
propose, with a #define, sounds like a good solution to me. I
implement it now. I'd rather call it EIGEN_NO_AUTOMATIC_RESIZING
because i think we still want to allow explicitly calling resize().
Notice that one could also consider implementing this behavior as a
matrix type option. So you would do
typedef Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic,
Eigen::NonResizable> MyMat;
and then objects of type MyMat have this behavior. Stuff to consider for 2.1...
Cheers,
Benoit
2009/1/28 Timothy Hunter <tjhunter@xxxxxxxxxxxx>:
> Hello all,
> I has been decided that the operator=(A,B) would resize A if it does
> not fit the size of B, right?
> I had a bug in my code I had problems to detect because of this
> feature. It would be nice to have an assert that fails if the matrices
> are of different size, and let the user decide to use this assert with
> some flag definitions like EIGEN_DO_NOT_RESIZE_DYNAMIC_MATRICES.
> Is it possible to do it with the current code?
>
> -- Timothy Hunter
>
>
>