Boost logo

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