Browse Source

MSVC 2013 compatibility: more workarounds for array initialization bug.

Followup to e2180ee85b.
Vladimír Vondruš 12 years ago
parent
commit
57e2c47cab
  1. 7
      src/Magnum/Math/RectangularMatrix.h
  2. 18
      src/Magnum/Math/Vector.h

7
src/Magnum/Math/RectangularMatrix.h

@ -673,7 +673,12 @@ namespace Implementation {
}
#ifndef CORRADE_GCC45_COMPATIBILITY
template<std::size_t cols, std::size_t rows, class T> template<std::size_t ...sequence> inline constexpr RectangularMatrix<cols, rows, T>::RectangularMatrix(Implementation::Sequence<sequence...>, const Vector<DiagonalSize, T>& diagonal): _data{Implementation::diagonalMatrixColumn<rows, sequence>(sequence < DiagonalSize ? diagonal[sequence] : T{})...} {}
template<std::size_t cols, std::size_t rows, class T> template<std::size_t ...sequence> inline constexpr RectangularMatrix<cols, rows, T>::RectangularMatrix(Implementation::Sequence<sequence...>, const Vector<DiagonalSize, T>& diagonal):
#ifndef CORRADE_MSVC2013_COMPATIBILITY
_data{Implementation::diagonalMatrixColumn<rows, sequence>(sequence < DiagonalSize ? diagonal[sequence] : T{})...} {}
#else
_data({Implementation::diagonalMatrixColumn<rows, sequence>(sequence < DiagonalSize ? diagonal[sequence] : T{})...}) {}
#endif
#else
template<std::size_t cols, std::size_t rows, class T> template<std::size_t ...sequence> inline RectangularMatrix<cols, rows, T>::RectangularMatrix(Implementation::Sequence<sequence...>, const Vector<DiagonalSize, T>& diagonal) {
constructInternal({Implementation::diagonalMatrixColumn<rows, sequence>(sequence < DiagonalSize ? diagonal[sequence] : T{})...});

18
src/Magnum/Math/Vector.h

@ -204,8 +204,22 @@ template<std::size_t size, class T> class Vector {
*
* @see operator[]()
*/
T* data() { return _data; }
constexpr const T* data() const { return _data; } /**< @overload */
T* data() {
#ifndef CORRADE_MSVC2013_COMPATIBILITY
return _data;
#else
return &_data[0];
#endif
}
/** @overload */
constexpr const T* data() const {
#ifndef CORRADE_MSVC2013_COMPATIBILITY
return _data;
#else
return &_data[0];
#endif
}
/**
* @brief Value at given position

Loading…
Cancel
Save