From fe243504a7a4a7a5fd265d72b7bf54035552da73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 3 Aug 2013 17:31:27 +0200 Subject: [PATCH] GCC 4.4 compatibility: cannot default some move constructors. I don't know why. --- src/Trade/AbstractMaterialData.cpp | 3 +++ src/Trade/AbstractMaterialData.h | 2 +- src/Trade/MeshObjectData2D.cpp | 3 +++ src/Trade/MeshObjectData2D.h | 2 +- src/Trade/MeshObjectData3D.cpp | 3 +++ src/Trade/MeshObjectData3D.h | 2 +- src/Trade/ObjectData2D.cpp | 3 ++- src/Trade/ObjectData3D.cpp | 3 ++- src/Trade/SceneData.cpp | 3 ++- src/Trade/TextureData.h | 5 ++++- 10 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Trade/AbstractMaterialData.cpp b/src/Trade/AbstractMaterialData.cpp index ed879f3c8..79b4eea00 100644 --- a/src/Trade/AbstractMaterialData.cpp +++ b/src/Trade/AbstractMaterialData.cpp @@ -32,6 +32,9 @@ AbstractMaterialData::AbstractMaterialData(Type type): _type(type) {} AbstractMaterialData::~AbstractMaterialData() {} +/* GCC 4.4 doesn't like it defaulted */ +AbstractMaterialData::AbstractMaterialData(AbstractMaterialData&& other): _type(other._type) {} + /* GCC 4.5 doesn't like it defaulted */ AbstractMaterialData& AbstractMaterialData::operator=(AbstractMaterialData&& other) { std::swap(_type, other._type); diff --git a/src/Trade/AbstractMaterialData.h b/src/Trade/AbstractMaterialData.h index a94e02e58..2cfa59264 100644 --- a/src/Trade/AbstractMaterialData.h +++ b/src/Trade/AbstractMaterialData.h @@ -58,7 +58,7 @@ class MAGNUM_EXPORT AbstractMaterialData { AbstractMaterialData(const AbstractMaterialData&) = delete; /** @brief Move constructor */ - AbstractMaterialData(AbstractMaterialData&&) = default; + AbstractMaterialData(AbstractMaterialData&&); /** @brief Copying is not allowed */ AbstractMaterialData& operator=(const AbstractMaterialData&) = delete; diff --git a/src/Trade/MeshObjectData2D.cpp b/src/Trade/MeshObjectData2D.cpp index 1b6cf8dfa..fde51e616 100644 --- a/src/Trade/MeshObjectData2D.cpp +++ b/src/Trade/MeshObjectData2D.cpp @@ -28,6 +28,9 @@ namespace Magnum { namespace Trade { MeshObjectData2D::MeshObjectData2D(std::vector children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material): ObjectData2D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material) {} +/* GCC 4.4 doesn't like it defaulted */ +MeshObjectData2D::MeshObjectData2D(MeshObjectData2D&& other): ObjectData2D(std::move(other)), _material(other._material) {} + /* GCC 4.5 doesn't like it defaulted */ MeshObjectData2D& MeshObjectData2D::operator=(MeshObjectData2D&& other) { ObjectData2D::operator=(std::move(other)); diff --git a/src/Trade/MeshObjectData2D.h b/src/Trade/MeshObjectData2D.h index 90220bd49..d3df17a4c 100644 --- a/src/Trade/MeshObjectData2D.h +++ b/src/Trade/MeshObjectData2D.h @@ -55,7 +55,7 @@ class MAGNUM_EXPORT MeshObjectData2D: public ObjectData2D { MeshObjectData2D(const MeshObjectData2D&) = delete; /** @brief Move constructor */ - MeshObjectData2D(MeshObjectData2D&&) = default; + MeshObjectData2D(MeshObjectData2D&&); /** @brief Copying is not allowed */ MeshObjectData2D& operator=(const MeshObjectData2D&) = delete; diff --git a/src/Trade/MeshObjectData3D.cpp b/src/Trade/MeshObjectData3D.cpp index 8ae694290..a162a5a9b 100644 --- a/src/Trade/MeshObjectData3D.cpp +++ b/src/Trade/MeshObjectData3D.cpp @@ -28,6 +28,9 @@ namespace Magnum { namespace Trade { MeshObjectData3D::MeshObjectData3D(std::vector children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material): ObjectData3D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material) {} +/* GCC 4.4 doesn't like it defaulted */ +MeshObjectData3D::MeshObjectData3D(MeshObjectData3D&& other): ObjectData3D(std::move(other)), _material(other._material) {} + /* GCC 4.5 doesn't like it defaulted */ MeshObjectData3D& MeshObjectData3D::operator=(MeshObjectData3D&& other) { ObjectData3D::operator=(std::move(other)); diff --git a/src/Trade/MeshObjectData3D.h b/src/Trade/MeshObjectData3D.h index e1a852a61..2628c733a 100644 --- a/src/Trade/MeshObjectData3D.h +++ b/src/Trade/MeshObjectData3D.h @@ -55,7 +55,7 @@ class MAGNUM_EXPORT MeshObjectData3D: public ObjectData3D { MeshObjectData3D(const MeshObjectData3D&) = delete; /** @brief Move constructor */ - MeshObjectData3D(MeshObjectData3D&&) = default; + MeshObjectData3D(MeshObjectData3D&&); /** @brief Copying is not allowed */ MeshObjectData3D& operator=(const MeshObjectData3D&) = delete; diff --git a/src/Trade/ObjectData2D.cpp b/src/Trade/ObjectData2D.cpp index ad5b4de03..18d829be9 100644 --- a/src/Trade/ObjectData2D.cpp +++ b/src/Trade/ObjectData2D.cpp @@ -30,7 +30,8 @@ ObjectData2D::ObjectData2D(std::vector children, const Matrix3& tra ObjectData2D::ObjectData2D(std::vector children, const Matrix3& transformation): _children(children), _transformation(transformation), _instanceType(InstanceType::Empty), _instance(-1) {} -ObjectData2D::ObjectData2D(ObjectData2D&&) = default; +/* GCC 4.4 doesn't like it defaulted */ +ObjectData2D::ObjectData2D(ObjectData2D&& other): _children(std::move(other._children)), _transformation(std::move(other._transformation)), _instanceType(std::move(other._instanceType)), _instance(std::move(other._instance)) {} ObjectData2D::~ObjectData2D() = default; diff --git a/src/Trade/ObjectData3D.cpp b/src/Trade/ObjectData3D.cpp index cd995b8f7..33c9d1f3a 100644 --- a/src/Trade/ObjectData3D.cpp +++ b/src/Trade/ObjectData3D.cpp @@ -30,7 +30,8 @@ ObjectData3D::ObjectData3D(std::vector children, const Matrix4& tra ObjectData3D::ObjectData3D(std::vector children, const Matrix4& transformation): _children(std::move(children)), _transformation(transformation), _instanceType(InstanceType::Empty), _instance(-1) {} -ObjectData3D::ObjectData3D(ObjectData3D&&) = default; +/* GCC 4.4 doesn't like it defaulted */ +ObjectData3D::ObjectData3D(ObjectData3D&& other): _children(std::move(other._children)), _transformation(std::move(other._transformation)), _instanceType(std::move(other._instanceType)), _instance(std::move(other._instance)) {} ObjectData3D::~ObjectData3D() = default; diff --git a/src/Trade/SceneData.cpp b/src/Trade/SceneData.cpp index 85036b4f4..a347942ab 100644 --- a/src/Trade/SceneData.cpp +++ b/src/Trade/SceneData.cpp @@ -28,7 +28,8 @@ namespace Magnum { namespace Trade { SceneData::SceneData(std::vector children2D, std::vector children3D): _children2D(std::move(children2D)), _children3D(std::move(children3D)) {} -SceneData::SceneData(SceneData&&) = default; +/* GCC 4.4 doesn't like it defaulted */ +SceneData::SceneData(SceneData&& other): _children2D(std::move(other._children2D)), _children3D(std::move(other._children3D)) {} /* GCC 4.5 doesn't like it defaulted */ SceneData& SceneData::operator=(SceneData&& other) { diff --git a/src/Trade/TextureData.h b/src/Trade/TextureData.h index 25dd7f4b5..a93740b14 100644 --- a/src/Trade/TextureData.h +++ b/src/Trade/TextureData.h @@ -66,7 +66,7 @@ class TextureData { TextureData(const TextureData&) = delete; /** @brief Move constructor */ - TextureData(TextureData&&) = default; + TextureData(TextureData&&); /** @brief Copying is not allowed */ TextureData& operator=(const TextureData&) = delete; @@ -108,6 +108,9 @@ class TextureData { UnsignedInt _image; }; +/* GCC 4.4 doesn't like it defaulted */ +inline TextureData::TextureData(TextureData&& other): _type(other._type), _minificationFilter(other._minificationFilter), _magnificationFilter(other._magnificationFilter), _mipmapFilter(other._mipmapFilter), _wrapping(other._wrapping), _image(other._image) {} + /* GCC 4.5 doesn't like it defaulted */ inline TextureData& TextureData::operator=(TextureData&& other) { std::swap(_type, other._type);