namespace MapUtilsInternal {
+/* This dummy struct is used to introduce a conversion, making the overloaded
+operator below worse than the templated one provided in lexicalcast.h. */
+struct Any
+{
+ template<typename T>
+ Any(const T &) { }
+};
+
/* This must be hidden in the internal namespace to avoid interfering with
-other things. There may be problems if a key type has operator<< for ostream
-but not LexicalConverter. */
-template<typename T>
-void operator<<(LexicalConverter &, const T &)
+other things. */
+inline void operator<<(LexicalConverter &, Any)
{ }
template<typename T>