From e7f3cc2b940cff8d5c8a5ac9a683033d7732eb76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 2 May 2015 17:23:07 +0200 Subject: [PATCH] GCC 4.4 compatibility: no function-local types as template parameters. --- src/Magnum/SceneGraph/Test/ObjectTest.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Magnum/SceneGraph/Test/ObjectTest.cpp b/src/Magnum/SceneGraph/Test/ObjectTest.cpp index cc506bd05..57679c462 100644 --- a/src/Magnum/SceneGraph/Test/ObjectTest.cpp +++ b/src/Magnum/SceneGraph/Test/ObjectTest.cpp @@ -90,12 +90,15 @@ ObjectTest::ObjectTest() { &ObjectTest::rangeBasedForFeatures}); } -void ObjectTest::addFeature() { +/* GCC 4.4 doesn't implement function-local types as template parameters */ +namespace { class MyFeature: public AbstractFeature3D { public: explicit MyFeature(AbstractObject3D& object, Int, std::string&&): AbstractFeature3D{object} {} }; +} +void ObjectTest::addFeature() { Object3D o; CORRADE_VERIFY(o.features().isEmpty()); MyFeature& f = o.addFeature(0, "hello"); @@ -133,12 +136,15 @@ void ObjectTest::parenting() { CORRADE_VERIFY(childOne->children().isEmpty()); } -void ObjectTest::addChild() { +/* GCC 4.4 doesn't implement function-local types as template parameters */ +namespace { class MyObject: public Object3D { public: explicit MyObject(Int, std::string&&, Object3D* parent = nullptr): Object3D{parent} {} }; +} +void ObjectTest::addChild() { Object3D o; CORRADE_VERIFY(o.children().isEmpty()); MyObject& p = o.addChild(0, "hello"); @@ -536,7 +542,15 @@ void ObjectTest::rangeBasedForFeatures() { #else for(auto it = begin(object.features()); it != end(object.features()); ++it) features.push_back(&*it); #endif + /* GCC 4.4 doesn't implement function-local types as template parameters */ + #ifndef CORRADE_GCC44_COMPATIBILITY CORRADE_COMPARE(features, (std::vector{&a, &b, &c})); + #else + CORRADE_COMPARE(features, (std::vector{ + static_cast(&a), + static_cast(&b), + static_cast(&c)})); + #endif } }}}