summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/Initialize.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp
index 87b1926f5f5..e2a334037c0 100644
--- a/cpp/src/Ice/Initialize.cpp
+++ b/cpp/src/Ice/Initialize.cpp
@@ -404,6 +404,17 @@ Ice::CommunicatorHolder::CommunicatorHolder(shared_ptr<Communicator> communicato
{
}
+Ice::CommunicatorHolder&
+Ice::CommunicatorHolder::operator=(CommunicatorHolder&& other)
+{
+ if(_communicator)
+ {
+ _communicator->destroy();
+ }
+ _communicator = std::move(other._communicator);
+ return *this;
+}
+
#else // C++98 mapping
Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const char* argv[], const InitializationData& initData,
@@ -491,6 +502,12 @@ Ice::CommunicatorHolder::communicator() const
return _communicator;
}
+const Ice::CommunicatorPtr&
+Ice::CommunicatorHolder::operator->() const
+{
+ return _communicator;
+}
+
Ice::CommunicatorPtr
Ice::CommunicatorHolder::release()
{
@@ -503,12 +520,6 @@ Ice::CommunicatorHolder::release()
#endif
}
-const Ice::CommunicatorPtr&
-Ice::CommunicatorHolder::operator->() const
-{
- return _communicator;
-}
-
InstancePtr
IceInternal::getInstance(const CommunicatorPtr& communicator)
{