Description: <short summary of the patch>
 TODO: Put a short summary on the line above and replace this paragraph
 with a longer explanation of this change. Complete the meta-information
 with other relevant fields (see below for details). To make it easier, the
 information below has been extracted from the changelog. Adjust it or drop
 it.
 .
 dbus-c++ (0.9.0-ok3) nile; urgency=medium
 .
   * fix gcc-12
Author: liwenjun <liwenjun@kylinos.cn>

---
The information above should follow the Patch Tagging Guidelines, please
checkout https://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: (upstream|backport|vendor|other), (<patch-url>|commit:<commit-id>)
Bug: <upstream-bugtracker-url>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: (no|not-needed|<patch-forwarded-url>)
Applied-Upstream: <version>, (<commit-url>|commit:<commid-id>)
Reviewed-By: <name and email of someone who approved/reviewed the patch>
Last-Update: 2024-08-27

--- dbus-c++-0.9.0.orig/include/dbus-c++/types.h
+++ dbus-c++-0.9.0/include/dbus-c++/types.h
@@ -89,13 +89,7 @@ public:
   }
 
   template <typename T>
-  operator T() const
-  {
-    T cast;
-    MessageIter ri = _msg.reader();
-    ri >> cast;
-    return cast;
-  }
+  operator T() const;
 
 private:
 
@@ -316,7 +310,7 @@ struct type< Struct<T1, T2, T3, T4, T5,
   }
 };
 
-} /* namespace DBus */
+extern DXXAPI DBus::MessageIter &operator << (DBus::MessageIter &iter, const DBus::Variant &val);
 
 inline DBus::MessageIter &operator << (DBus::MessageIter &iter, const DBus::Invalid &)
 {
@@ -551,6 +545,8 @@ inline DBus::MessageIter &operator >> (D
   return ++iter;
 }
 
+extern DXXAPI DBus::MessageIter &operator >> (DBus::MessageIter &iter, DBus::Variant &val);
+
 template<typename E>
 inline DBus::MessageIter &operator >> (DBus::MessageIter &iter, std::vector<E>& val)
 {
@@ -644,7 +640,16 @@ inline DBus::MessageIter &operator >> (D
   return ++iter;
 }
 
-extern DXXAPI DBus::MessageIter &operator >> (DBus::MessageIter &iter, DBus::Variant &val);
+template <typename T>
+inline DBus::Variant::operator T() const
+{
+  T cast;
+  DBus::MessageIter ri = _msg.reader();
+  ri >> cast;
+  return cast;
+}
+
+} /* namespace DBus */
 
 #endif//__DBUSXX_TYPES_H
 
--- dbus-c++-0.9.0.orig/src/types.cpp
+++ dbus-c++-0.9.0/src/types.cpp
@@ -34,7 +34,7 @@
 #include "message_p.h"
 #include "internalerror.h"
 
-using namespace DBus;
+namespace DBus {
 
 Variant::Variant()
   : _msg(CallMessage()) // dummy message used as temporary storage for variant data
@@ -104,3 +104,4 @@ MessageIter &operator >> (MessageIter &i
   return ++iter;
 }
 
+} /* namespace DBus */
\ No newline at end of file
