Skip to content

make fixed_size matrices conform to std::is_standard_layout

Reference issue

What does this implement/fix?

Plain matrix/array objects now conform to standard layout. You may resume your type punning with slightly more defined behavior. Also:

  • check_size_for_overflow correctly checks for overflow (suppresses a bunch of compiler warnings)
  • fixed-size objects with non-trivial scalars now use copies instead of moves
  • bunch of dense storage tests which drove the above changes

Previously, as far back as Eigen 3.4 (probably further), fixed-size arrays of non-trivial scalars did not account for non-trivial, movable scalars. If we do want to take advantage of this, we would have to re-initialize every scalar that is moved. Possible, but I'll wait for someone to complain and present a compelling case before we go to the trouble of implementing it.

Additional information

Edited by Charles Schlosser

Merge request reports

Loading