Browse Source

GCC 4.6 compatibility: no delegating constructors.

pull/277/head
Vladimír Vondruš 13 years ago
parent
commit
1102232a24
  1. 9
      src/SceneGraph/AbstractFeature.h
  2. 7
      src/SceneGraph/Camera2D.h
  3. 7
      src/SceneGraph/Camera3D.h
  4. 4
      src/Test/ArrayTest.cpp

9
src/SceneGraph/AbstractFeature.h

@ -180,7 +180,14 @@ template<UnsignedInt dimensions, class T> class MAGNUM_SCENEGRAPH_EXPORT Abstrac
/* This is here to avoid ambiguity with deleted copy constructor when
passing `*this` from class subclassing both AbstractFeature and
AbstractObject */
template<class U, class = typename std::enable_if<std::is_base_of<AbstractObject<dimensions, T>, U>::value>::type> AbstractFeature(U& object): AbstractFeature(static_cast<AbstractObject<dimensions, T>&>(object)) {}
template<class U, class = typename std::enable_if<std::is_base_of<AbstractObject<dimensions, T>, U>::value>::type> AbstractFeature(U& object)
#ifndef CORRADE_GCC46_COMPATIBILITY
: AbstractFeature(static_cast<AbstractObject<dimensions, T>&>(object)) {}
#else
{
object.Containers::template LinkedList<AbstractFeature<dimensions, T>>::insert(this);
}
#endif
#endif
virtual ~AbstractFeature() = 0;

7
src/SceneGraph/Camera2D.h

@ -71,7 +71,12 @@ template<class T> class MAGNUM_SCENEGRAPH_EXPORT BasicCamera2D: public AbstractC
/* This is here to avoid ambiguity with deleted copy constructor when
passing `*this` from class subclassing both BasicCamera2D and
AbstractObject */
template<class U, class = typename std::enable_if<std::is_base_of<AbstractObject<2, T>, U>::value>::type> BasicCamera2D(U& object): BasicCamera2D(static_cast<AbstractObject<2, T>&>(object)) {}
template<class U, class = typename std::enable_if<std::is_base_of<AbstractObject<2, T>, U>::value>::type> BasicCamera2D(U& object):
#ifndef CORRADE_GCC46_COMPATIBILITY
BasicCamera2D(static_cast<AbstractObject<2, T>&>(object)) {}
#else
AbstractCamera<2, T>(static_cast<AbstractObject<2, T>&>(object)) {}
#endif
#endif
/**

7
src/SceneGraph/Camera3D.h

@ -73,7 +73,12 @@ template<class T> class MAGNUM_SCENEGRAPH_EXPORT BasicCamera3D: public AbstractC
/* This is here to avoid ambiguity with deleted copy constructor when
passing `*this` from class subclassing both BasicCamera3D and
AbstractObject */
template<class U, class = typename std::enable_if<std::is_base_of<AbstractObject<3, T>, U>::value>::type> BasicCamera3D(U& object): BasicCamera3D(static_cast<AbstractObject<3, T>&>(object)) {}
template<class U, class = typename std::enable_if<std::is_base_of<AbstractObject<3, T>, U>::value>::type> BasicCamera3D(U& object):
#ifndef CORRADE_GCC46_COMPATIBILITY
BasicCamera3D(static_cast<AbstractObject<3, T>&>(object)) {}
#else
AbstractCamera<3, T>(static_cast<AbstractObject<3, T>&>(object)) {}
#endif
#endif
/**

4
src/Test/ArrayTest.cpp

@ -51,7 +51,11 @@ void ArrayTest::construct() {
constexpr Array<3, Int> a = {5, 6, 7};
CORRADE_COMPARE(a, (Array<3, Int>(5, 6, 7)));
#ifndef CORRADE_GCC46_COMPATIBILITY
constexpr Array<3, Int> a2 = 5;
#else
Array<3, Int> a2 = 5; /* Not constexpr under GCC < 4.7 */
#endif
CORRADE_COMPARE(a2, (Array<3, Int>(5, 5, 5)));
constexpr Array1D b = 5;

Loading…
Cancel
Save