I'm trying to install the qpid proton 0.14.0 libraries on a SUSE linux system in order to integrate AMQP messaging into a large c++ program. The installation requires calling "cmake" and "make all". Upon calling "make all", the build gets to 32% complete, then throws errors:
Scanning dependencies of target qpid-proton-cpp
[ 32%] Building CXX object proton-c/bindings/cpp/CMakeFiles/qpid-proton-cpp.dir/src/connection.cpp.o
In file included from {Install_dir}/proton-c/bindings/cpp/include/proton/./././link.hpp:31,
from {Install_dir}/proton-c/bindings/cpp/include/proton/././receiver.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/./session.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/connection.hpp:28,
from {Install_dir}/proton-c/bindings/cpp/src/connection.cpp:24:
{Install_dir}/proton-c/bindings/cpp/include/proton/././././sender_options.hpp:87: error: declaration of ‘proton::sender_options& proton::sender_options::delivery_mode(proton::delivery_mode)’
{Install_dir}/proton-c/bindings/cpp/include/proton/./././././delivery_mode.hpp:30: error: changes meaning of ‘delivery_mode’ from ‘struct proton::delivery_mode’
In file included from {Install_dir}/proton-c/bindings/cpp/include/proton/./././link.hpp:32,
from {Install_dir}/proton-c/bindings/cpp/include/proton/././receiver.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/./session.hpp:27,
from {Install_dir}/proton-c/bindings/cpp/include/proton/connection.hpp:28,
from {Install_dir}/proton-c/bindings/cpp/src/connection.cpp:24:
{Install_dir}/proton-c/bindings/cpp/include/proton/././././receiver_options.hpp:83: error: declaration of ‘proton::receiver_options& proton::receiver_options::delivery_mode(proton::delivery_mode)’
{Install_dir}/proton-c/bindings/cpp/include/proton/./././././delivery_mode.hpp:30: error: changes meaning of ‘delivery_mode’ from ‘struct proton::delivery_mode’
make[2]: *** [proton-c/bindings/cpp/CMakeFiles/qpid-proton-cpp.dir/src/connection.cpp.o] Error 1
make[1]: *** [proton-c/bindings/cpp/CMakeFiles/qpid-proton-cpp.dir/all] Error 2
make: *** [all] Error 2
Researching the "changes meaning of 'delivery_mode' from 'struct proton::delivery_mode' error leads me to belive that this is an issue to do with a constructor function having the same name as a struct. I'm including the deliver_mode structure declaration below. Any thoughts as to how I can get these libraries to install? Thanks!
namespace proton {
/// The message delivery policy to establish when opening a link.
/// This structure imitates the newer C++11 "enum class" so that
/// The enumeration constants are in the delivery_mode namespace.
struct delivery_mode {
/// Delivery modes
enum modes {
/// No set policy. The application must settle messages
/// itself according to its own policy.
NONE = 0,
/// Outgoing messages are settled immediately by the link.
/// There are no duplicates.
AT_MOST_ONCE,
/// The receiver settles the delivery first with an
/// accept/reject/release disposition. The sender waits to
/// settle until after the disposition notification is
/// received.
AT_LEAST_ONCE
};
/// @cond INTERNAL
delivery_mode() : modes_(NONE) {}
delivery_mode(modes m) : modes_(m) {}
operator modes() { return modes_; }
/// @endcond
private:
modes modes_;
};
}