Fix an overload resolution problem in formatting values for key_error
authorMikko Rasa <tdb@tdb.fi>
Mon, 14 Jan 2013 09:41:34 +0000 (11:41 +0200)
committerMikko Rasa <tdb@tdb.fi>
Wed, 16 Jan 2013 16:40:11 +0000 (18:40 +0200)
source/core/maputils.h

index 8c642fb9c57a1f9acda6ba5ab2d0dc5311316306..0f863b46fdf7dea307f251be4823a4e63cdcbc4e 100644 (file)
@@ -9,11 +9,17 @@ namespace Msp {
 
 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>