summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/MetricsFunctional.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Ice/MetricsFunctional.h')
-rw-r--r--cpp/include/Ice/MetricsFunctional.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/cpp/include/Ice/MetricsFunctional.h b/cpp/include/Ice/MetricsFunctional.h
index a40be09de17..1d738549803 100644
--- a/cpp/include/Ice/MetricsFunctional.h
+++ b/cpp/include/Ice/MetricsFunctional.h
@@ -21,6 +21,23 @@ template<typename R> struct ReferenceWrapper
}
};
+#ifdef ICE_CPP11_MAPPING // C++11 mapping
+template<typename R> struct ReferenceWrapper<::std::shared_ptr<R> >
+{
+ static R* get(const ::std::shared_ptr<R>& v)
+ {
+ return v.get();
+ }
+};
+
+template<typename R> struct ReferenceWrapper<const ::std::shared_ptr<R>& >
+{
+ static R* get(const ::std::shared_ptr<R>& v)
+ {
+ return v.get();
+ }
+};
+#else // C++98 mapping
template<typename R> struct ReferenceWrapper<IceInternal::ProxyHandle<R> >
{
static R* get(const IceInternal::ProxyHandle<R>& v)
@@ -52,6 +69,7 @@ template<typename R> struct ReferenceWrapper<const IceInternal::Handle<R>& >
return v.get();
}
};
+#endif
template<typename R> struct ReferenceWrapper<R*>
{