From bbe19ab788355360871409d0bb002ce636b2a34f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 17 Feb 2014 19:25:54 +0100 Subject: [PATCH] GCC 4.5 compatibility: somehow can't use {} to construct from init-list. --- src/Magnum/SceneGraph/AbstractObject.h | 6 ++++-- src/Magnum/SceneGraph/Object.h | 9 ++++++--- src/Magnum/SceneGraph/Object.hpp | 15 ++++++++++----- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/Magnum/SceneGraph/AbstractObject.h b/src/Magnum/SceneGraph/AbstractObject.h index d3e363ac6..bb33539a5 100644 --- a/src/Magnum/SceneGraph/AbstractObject.h +++ b/src/Magnum/SceneGraph/AbstractObject.h @@ -171,7 +171,8 @@ template class AbstractObject /* Workarounds to avoid ambiguous overload errors on GCC < 4.8. And I thought 4.7 was bug-free. */ std::vector transformationMatrices(std::initializer_list>>& objects, const MatrixType& initialTransformationMatrix = MatrixType()) { - return transformationMatrices(std::vector>>{objects}, initialTransformationMatrix); + /* GCC 4.5 doesn't like {} here */ + return transformationMatrices(std::vector>>(objects), initialTransformationMatrix); } CORRADE_DEPRECATED("use transformationMatrices(const std::vector>>&, const MatrixType&) instead") std::vector transformationMatrices(std::initializer_list*> objects, const MatrixType& initialTransformationMatrix = MatrixType()) const; #endif @@ -209,7 +210,8 @@ template class AbstractObject /* Workarounds to avoid ambiguous overload errors on GCC < 4.8. And I thought 4.7 was bug-free. */ static void setClean(std::initializer_list>> objects) { - return setClean(std::vector>>{objects}); + /* GCC 4.5 doesn't like {} here */ + return setClean(std::vector>>(objects)); } static CORRADE_DEPRECATED("use setClean(const std::vector>>&) instead") void setClean(std::initializer_list*> objects); #endif diff --git a/src/Magnum/SceneGraph/Object.h b/src/Magnum/SceneGraph/Object.h index 8c3ecbd41..28fe75b83 100644 --- a/src/Magnum/SceneGraph/Object.h +++ b/src/Magnum/SceneGraph/Object.h @@ -263,7 +263,8 @@ template class Object: public AbstractObject transformationMatrices(std::initializer_list>> objects, const MatrixType& initialTransformationMatrix = MatrixType()) const { - return transformationMatrices(std::vector>>{objects}, initialTransformationMatrix); + /* GCC 4.5 doesn't like {} here */ + return transformationMatrices(std::vector>>(objects), initialTransformationMatrix); } CORRADE_DEPRECATED("use transformationMatrices(const std::vector>>&, const MatrixType&) instead") std::vector transformationMatrices(std::initializer_list*> objects, const MatrixType& initialTransformationMatrix = MatrixType()) const; #endif @@ -292,7 +293,8 @@ template class Object: public AbstractObject transformations(std::initializer_list>> objects, const typename Transformation::DataType& initialTransformation = typename Transformation::DataType()) const { - return transformations(std::vector>>{objects}, initialTransformation); + /* GCC 4.5 doesn't like {} here */ + return transformations(std::vector>>(objects), initialTransformation); } CORRADE_DEPRECATED("use transformations(std::vector>>, const typename Transformation::DataType&) instead") std::vector transformations(std::initializer_list*> objects, const typename Transformation::DataType& initialTransformation = typename Transformation::DataType()) const; #endif @@ -326,7 +328,8 @@ template class Object: public AbstractObject>> objects) { - setClean(std::vector>>{objects}); + /* GCC 4.5 doesn't like {} here */ + setClean(std::vector>>(objects)); } static CORRADE_DEPRECATED("use setClean(std::vector>>) instead") void setClean(std::initializer_list*> objects); #endif diff --git a/src/Magnum/SceneGraph/Object.hpp b/src/Magnum/SceneGraph/Object.hpp index f0d6a2287..830d34d06 100644 --- a/src/Magnum/SceneGraph/Object.hpp +++ b/src/Magnum/SceneGraph/Object.hpp @@ -52,7 +52,8 @@ template void AbstractObject::se #ifdef CORRADE_GCC47_COMPATIBILITY template void AbstractObject::setClean(std::initializer_list*> objects) { - return setClean(std::vector*>{objects}); + /* GCC 4.5 doesn't like {} here */ + return setClean(std::vector*>(objects)); } #endif #endif @@ -74,7 +75,8 @@ template auto AbstractObject::tr #ifdef CORRADE_GCC47_COMPATIBILITY template auto AbstractObject::transformationMatrices(std::initializer_list*> objects, const MatrixType& initialTransformationMatrix) const -> std::vector { - return transformationMatrices(std::vector*>{objects}, initialTransformationMatrix); + /* GCC 4.5 doesn't like {} here */ + return transformationMatrices(std::vector*>(objects), initialTransformationMatrix); } #endif #endif @@ -236,7 +238,8 @@ template auto Object::transformationMatric #ifdef CORRADE_GCC47_COMPATIBILITY template auto Object::transformationMatrices(std::initializer_list*> objects, const MatrixType& initialTransformationMatrix) const -> std::vector { - return transformationMatrices(std::vector*>{objects}, initialTransformationMatrix); + /* GCC 4.5 doesn't like {} here */ + return transformationMatrices(std::vector*>(objects), initialTransformationMatrix); } #endif #endif @@ -369,7 +372,8 @@ template std::vector Ob #ifdef CORRADE_GCC47_COMPATIBILITY template std::vector Object::transformations(std::initializer_list*> objects, const typename Transformation::DataType& initialTransformation) const { - return transformations(std::vector*>{objects}, initialTransformation); + /* GCC 4.5 doesn't like {} here */ + return transformations(std::vector*>(objects), initialTransformation); } #endif #endif @@ -487,7 +491,8 @@ template void Object::setClean(const std:: #ifdef CORRADE_GCC47_COMPATIBILITY template void Object::setClean(std::initializer_list*> objects) { - setClean(std::vector*>{objects}); + /* GCC 4.5 doesn't like {} here */ + setClean(std::vector*>(objects)); } #endif #endif