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 #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 #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) { 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{})...}); 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[]() * @see operator[]()
*/ */
T* data() { return _data; } T* data() {
constexpr const T* data() const { return _data; } /**< @overload */ #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 * @brief Value at given position

Loading…
Cancel
Save