diff --git a/src/blackmisc/aviation/avionicsbase.h b/src/blackmisc/aviation/avionicsbase.h index 5fa0e70c6..305c75b01 100644 --- a/src/blackmisc/aviation/avionicsbase.h +++ b/src/blackmisc/aviation/avionicsbase.h @@ -32,10 +32,6 @@ namespace BlackMisc protected: QString m_name; //!< name of the unit - //! Default constructor - //! \todo Remove as part of MS' CValueObject refactoring - CAvionicsBase() : m_name("empty") {} - //! \brief Constructor CAvionicsBase(const QString &name) : m_name(name) {} diff --git a/src/blackmisc/pq/physicalquantity.cpp b/src/blackmisc/pq/physicalquantity.cpp index 551b27e5c..b9c77ec02 100644 --- a/src/blackmisc/pq/physicalquantity.cpp +++ b/src/blackmisc/pq/physicalquantity.cpp @@ -37,11 +37,6 @@ namespace BlackMisc template QString CPhysicalQuantity::getUnitSymbol() const { return this->m_unit.getSymbol(true); } - template - CPhysicalQuantity::CPhysicalQuantity() : - m_value(0.0), m_unit(MU::nullUnit()) - { } - template CPhysicalQuantity::CPhysicalQuantity(double value, const MU &unit) : m_value(unit.isNull() ? 0.0 : value), m_unit(unit) diff --git a/src/blackmisc/pq/physicalquantity.h b/src/blackmisc/pq/physicalquantity.h index 4307c629a..d0cbf48f6 100644 --- a/src/blackmisc/pq/physicalquantity.h +++ b/src/blackmisc/pq/physicalquantity.h @@ -217,10 +217,6 @@ namespace BlackMisc QString convertToQString(bool i18n = false) const; protected: - //! Default constructor - //! \todo Remove as part of MS' CValueObject refactoring - CPhysicalQuantity(); - //! Constructor with double CPhysicalQuantity(double value, const MU &unit); diff --git a/src/blackmisc/valueobject.h b/src/blackmisc/valueobject.h index f5f2ce0fe..11f1b1167 100644 --- a/src/blackmisc/valueobject.h +++ b/src/blackmisc/valueobject.h @@ -36,6 +36,21 @@ namespace BlackMisc { + namespace Private + { + //! \private SFINAE for CValueObject constructor to avoid being selected as a viable copy constructor. + //! @{ + template struct DecayFirst + { + typedef void type; + }; + template struct DecayFirst + { + typedef typename std::decay::type type; + }; + //! @} + } + /*! * Default base class for CValueObject. */ @@ -138,13 +153,10 @@ namespace BlackMisc using Mixin::MetaType::registerMetadata; protected: - //! Default constructor. - CValueObject() = default; - //! Template constructor, forwards all arguments to base class constructor. //! \todo When our compilers support C++11 inheriting constructors, use those instead. - template ::type>::value>::type> - CValueObject(T &&first, Ts &&... args) : Base(std::forward(first), std::forward(args)...) {} + template ::type>::value>::type> + CValueObject(Ts &&... args) : Base(std::forward(args)...) {} //! Copy constructor. CValueObject(const CValueObject &) = default;