+template<class X, class Y>
+bool operator>(remote_ptr<X> const& x, remote_ptr<Y> const& y)
+{
+ return x.address() > y.address();
+}
+
+template<class X, class Y>
+bool operator>=(remote_ptr<X> const& x, remote_ptr<Y> const& y)
+{
+ return x.address() >= y.address();
+}
+
+template<class X, class Y>
+bool operator<=(remote_ptr<X> const& x, remote_ptr<Y> const& y)
+{
+ return x.address() <= y.address();
+}
+
+template<class X, class Y>
+bool operator==(remote_ptr<X> const& x, remote_ptr<Y> const& y)
+{
+ return x.address() == y.address();
+}
+
+template<class X, class Y>
+bool operator!=(remote_ptr<X> const& x, remote_ptr<Y> const& y)
+{
+ return x.address() != y.address();
+}
+
+template<class T> inline
+remote_ptr<T> remote(T *p)
+{
+ return remote_ptr<T>(p);
+}
+
+template<class T=void> inline
+remote_ptr<T> remote(uint64_t p)
+{
+ return remote_ptr<T>(p);
+}