diff --git a/proton-c/bindings/cpp/include/proton/internal/object.hpp b/proton-c/bindings/cpp/include/proton/internal/object.hpp
index 330ebbe..78a990c 100644
--- a/proton-c/bindings/cpp/include/proton/internal/object.hpp
+++ b/proton-c/bindings/cpp/include/proton/internal/object.hpp
@@ -27,6 +27,7 @@
 #include "./comparable.hpp"
 
 #include <memory>
+#include <string>
 
 namespace proton {
 
@@ -38,6 +39,7 @@
   protected:
     PN_CPP_EXTERN static void incref(void* p);
     PN_CPP_EXTERN static void decref(void* p);
+    PN_CPP_EXTERN static std::string inspect(void* p);
 };
 
 template <class T> class pn_ptr : private pn_ptr_base, private comparable<pn_ptr<T> > {
@@ -63,6 +65,8 @@
     explicit operator bool() const { return !!ptr_; }
 #endif
 
+    std::string inspect() const { return pn_ptr_base::inspect(ptr_); }
+
     static pn_ptr take_ownership(T* p) { return pn_ptr<T>(p, true); }
 
   private:
@@ -96,6 +100,7 @@
 
     friend bool operator==(const object& a, const object& b) { return a.object_ == b.object_; }
     friend bool operator<(const object& a, const object& b) { return a.object_ < b.object_; }
+    friend std::ostream& operator<<(std::ostream& o, const object& a) { o << a.object_.inspect(); return o; }
   template <class U> friend class proton::thread_safe;
 };
 
diff --git a/proton-c/bindings/cpp/src/object.cpp b/proton-c/bindings/cpp/src/object.cpp
index f881c637..2f3a348 100644
--- a/proton-c/bindings/cpp/src/object.cpp
+++ b/proton-c/bindings/cpp/src/object.cpp
@@ -31,4 +31,10 @@
     if (p) ::pn_decref(const_cast<void*>(p));
 }
 
+std::string pn_ptr_base::inspect(void* p) {
+    if (!p) return std::string();
+    ::pn_string_t* s = ::pn_string(NULL);
+    (void) ::pn_inspect(p, s);
+    return std::string(pn_string_get(s));
+}
 }}
