summaryrefslogtreecommitdiff
path: root/cpp/include/IceUtil/UniquePtr.h
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2016-07-22 17:09:25 -0400
committerBernard Normier <bernard@zeroc.com>2016-07-22 17:09:25 -0400
commit752e06b4eb63abb8a30bb958802eaedda72d3806 (patch)
tree7c2348544d202c310a55a62629abc4025daa03a5 /cpp/include/IceUtil/UniquePtr.h
parentDisable VS 2015 update 3 optimizer (diff)
downloadice-752e06b4eb63abb8a30bb958802eaedda72d3806.tar.bz2
ice-752e06b4eb63abb8a30bb958802eaedda72d3806.tar.xz
ice-752e06b4eb63abb8a30bb958802eaedda72d3806.zip
Added ICE_BUILDING_SRC to make builds
Ice::Dispatcher and Ice::LocalObject are now hidden with C++11 Reworked C++11 exception ice_clone, added ExceptionHelper + other C++ cleanups
Diffstat (limited to 'cpp/include/IceUtil/UniquePtr.h')
-rw-r--r--cpp/include/IceUtil/UniquePtr.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/cpp/include/IceUtil/UniquePtr.h b/cpp/include/IceUtil/UniquePtr.h
index e58f32fd608..0a81df47fad 100644
--- a/cpp/include/IceUtil/UniquePtr.h
+++ b/cpp/include/IceUtil/UniquePtr.h
@@ -15,11 +15,12 @@
namespace IceUtil
{
-//
-// This is temporary and very partial placeholder for std::unique_ptr,
-// which is not yet widely available.
-//
+#ifdef ICE_CPP11_MAPPING
+template<typename T>
+using UniquePtr = std::unique_ptr<T>;
+
+#else
template<typename T>
class UniquePtr
@@ -84,6 +85,11 @@ public:
return _ptr;
}
+ operator bool() const
+ {
+ return _ptr != 0;
+ }
+
void swap(UniquePtr& a)
{
T* tmp = a._ptr;
@@ -96,6 +102,8 @@ private:
T* _ptr;
};
+#endif
+
} // End of namespace IceUtil
#endif