DDS-PSM-Cxx 1.0b2 FTF Avatar
  1. OMG Issue

DDSPSMC — Compilation errors on Visual Studio 2008/2010

  • Key: DDSPSMC-5
  • Legacy Issue Number: 16338
  • Status: closed  
  • Source: Real-Time Innovations ( Sumant Tambe)
  • Summary:

    Description: The sources obtained from dds-psm-cxx.googlecode.com do not compile on Visual Studio compilers without significant efforts. There are multiple issues most related to type conversion.

    1. All the classes that inherit from dds::core::Value<D> seem to be missing a copy-ctor. For example, QosPolicyCount in src\hpp\tdds\core\policy\QosPolicyCount.hpp. Without a copy-ctor, VS2010 issues a “cannot convert from ...” error.

    Most of these classes are found in the following files:

    src\hpp\tdds\core\InstanceHandle.hpp
    src\hpp\tdds\core\policy\CorePolicy.hpp
    src\hpp\tdds\core\policy\QosPolicyCount.hpp
    src\hpp\tdds\core\qos\EntityQos.hpp

    Proposed Solution: Add a copy constructor to all the classes that inherit from dds::core::Value<D> as follows:

    QosPolicyCount(const QosPolicyCount& src) : dds::core::Value<DELEGATE>(src.delegate()) { }

    2. The exception classes in dds-psm-cxx\src\hpp\dds\core\Exception.hpp do not need copy-ctor because there is nothing to copy and the base classes don’t have copy constructors either.

    Proposed resolution: Remove the declarations of copy constructors in dds-psm-cxx\src\hpp\dds\core\Exception.hpp

    3. The private constructor of SampleRejectedStatus in dds-psm-cxx-read-only\src\hpp\dds\core\status\State.hpp needs a typecast to avoid compilation errors on Visual studio versions of STL.

    The following constructor can’t be called due to ambiguous overloads of bistset<N> constructors.

    private: SampleRejectedState(uint32_t s) : MaskType(s) { }

    Proposed solution: Change the call to the base constructor to include an explicit static_cast to int.

    private: SampleRejectedState(uint32_t s) : MaskType(static_cast<int>(s)) { }

  • Reported: DDS-PSM-Cxx 1.0b1 — Fri, 17 Jun 2011 04:00 GMT
  • Disposition: Resolved — DDS-PSM-Cxx 1.0b2
  • Disposition Summary:

    The Visual Studio C++ 2010 compiler was raising a series of errors and warning that were not caught by GCC relating to some lacking ctors and conversion operators in some template classes. All the errors raised by Visual Studio C++ 2010 have been addressed as verifiable on the latest version of the dds-psm-cxx source code available at https://github.com/kydos/dds-psm-cxx

  • Updated: Fri, 6 Mar 2015 20:58 GMT