|
Boost Users : |
From: Markus Werle (numerical.simulation_at_[hidden])
Date: 2007-01-16 09:06:54
Hi!
IMHO the behaviour of operator= for multi_array is a little bit broken.
A lot of preconditions required:
template <typename ConstMultiArray>
multi_array_ref& operator=(const ConstMultiArray& other) {
[...]
// make sure the dimensions agree
assert(other.num_dimensions() == this->num_dimensions());
assert(std::equal(other.shape(),other.shape()+this->num_dimensions(),
this->shape()));
Besides the fact that I get mad about asserts instead of exceptions
(please change this to a way users may choose) why do we have such an odd
behaviour here?
>From page 1, line 3 of the docs I cite:
"The interface design is in line with the precedent set by the C++ Standard
Library containers" - this is not true for operator=, since
std::<container>::operator= works fine for me all the time _without_ any resize.
Could we please change the behaviour of multi_array::operator= to take care
of resize where in need to?
IMHO operator= should result in a true copy ignoring previous state.
Markus
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net