Added baselines for new test cases
diff --git a/projects/SelfTest/Baselines/console.std.approved.txt b/projects/SelfTest/Baselines/console.std.approved.txt
index 96335b1..d2e42b4 100644
--- a/projects/SelfTest/Baselines/console.std.approved.txt
+++ b/projects/SelfTest/Baselines/console.std.approved.txt
@@ -786,6 +786,6 @@
   "first" == "second"
 
 ===============================================================================
-test cases: 130 |  91 passed | 38 failed |  1 failed as expected
-assertions: 709 | 617 passed | 79 failed | 13 failed as expected
+test cases: 148 | 109 passed | 38 failed |  1 failed as expected
+assertions: 738 | 646 passed | 79 failed | 13 failed as expected
 
diff --git a/projects/SelfTest/Baselines/console.sw.approved.txt b/projects/SelfTest/Baselines/console.sw.approved.txt
index cdc918b..169f263 100644
--- a/projects/SelfTest/Baselines/console.sw.approved.txt
+++ b/projects/SelfTest/Baselines/console.sw.approved.txt
@@ -4,6 +4,78 @@
 Run with -? for options
 
 -------------------------------------------------------------------------------
+toString(enum)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "0" )
+with expansion:
+  "0" == "0"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "1" )
+with expansion:
+  "1" == "1"
+
+-------------------------------------------------------------------------------
+toString(enum w/operator<<)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "E2{0}" )
+with expansion:
+  "E2{0}" == "E2{0}"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "E2{1}" )
+with expansion:
+  "E2{1}" == "E2{1}"
+
+-------------------------------------------------------------------------------
+toString(enum class)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "0" )
+with expansion:
+  "0" == "0"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "1" )
+with expansion:
+  "1" == "1"
+
+-------------------------------------------------------------------------------
+toString(enum class w/operator<<)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "E2/V0" )
+with expansion:
+  "E2/V0" == "E2/V0"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "E2/V1" )
+with expansion:
+  "E2/V1" == "E2/V1"
+
+-------------------------------------------------------------------------------
 Some simple comparisons between doubles
 -------------------------------------------------------------------------------
 ApproxTests.cpp:<line number>
@@ -5906,6 +5978,234 @@
 PASSED:
 
 -------------------------------------------------------------------------------
+toString( has_toString )
+-------------------------------------------------------------------------------
+ToStringWhich.cpp:<line number>
+...............................................................................
+
+ToStringWhich.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( item ) == "toString( has_toString )" )
+with expansion:
+  "toString( has_toString )"
+  ==
+  "toString( has_toString )"
+
+-------------------------------------------------------------------------------
+toString( has_maker )
+-------------------------------------------------------------------------------
+ToStringWhich.cpp:<line number>
+...............................................................................
+
+ToStringWhich.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( item ) == "StringMaker<has_maker>" )
+with expansion:
+  "StringMaker<has_maker>"
+  ==
+  "StringMaker<has_maker>"
+
+-------------------------------------------------------------------------------
+toString( has_maker_and_toString )
+-------------------------------------------------------------------------------
+ToStringWhich.cpp:<line number>
+...............................................................................
+
+ToStringWhich.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( item ) == "toString( has_maker_and_toString )" )
+with expansion:
+  "toString( has_maker_and_toString )"
+  ==
+  "toString( has_maker_and_toString )"
+
+-------------------------------------------------------------------------------
+toString( vectors<has_toString )
+-------------------------------------------------------------------------------
+ToStringWhich.cpp:<line number>
+...............................................................................
+
+ToStringWhich.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( v ) == "{ {?} }" )
+with expansion:
+  "{ {?} }" == "{ {?} }"
+
+-------------------------------------------------------------------------------
+toString( vectors<has_maker )
+-------------------------------------------------------------------------------
+ToStringWhich.cpp:<line number>
+...............................................................................
+
+ToStringWhich.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( v ) == "{ StringMaker<has_maker> }" )
+with expansion:
+  "{ StringMaker<has_maker> }"
+  ==
+  "{ StringMaker<has_maker> }"
+
+-------------------------------------------------------------------------------
+toString( vectors<has_maker_and_toString )
+-------------------------------------------------------------------------------
+ToStringWhich.cpp:<line number>
+...............................................................................
+
+ToStringWhich.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( v ) == "{ StringMaker<has_maker_and_toString> }" )
+with expansion:
+  "{ StringMaker<has_maker_and_toString> }"
+  ==
+  "{ StringMaker<has_maker_and_toString> }"
+
+-------------------------------------------------------------------------------
+std::pair<int,std::string> -> toString
+-------------------------------------------------------------------------------
+ToStringPair.cpp:<line number>
+...............................................................................
+
+ToStringPair.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( value ) == "{ 34, \"xyzzy\" }" )
+with expansion:
+  "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+
+-------------------------------------------------------------------------------
+std::pair<int,const std::string> -> toString
+-------------------------------------------------------------------------------
+ToStringPair.cpp:<line number>
+...............................................................................
+
+ToStringPair.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(value) == "{ 34, \"xyzzy\" }" )
+with expansion:
+  "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+
+-------------------------------------------------------------------------------
+std::vector<std::pair<std::string,int> > -> toString
+-------------------------------------------------------------------------------
+ToStringPair.cpp:<line number>
+...............................................................................
+
+ToStringPair.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( pr ) == "{ { \"green\", 55 } }" )
+with expansion:
+  "{ { "green", 55 } }"
+  ==
+  "{ { "green", 55 } }"
+
+-------------------------------------------------------------------------------
+pair<pair<int,const char *,pair<std::string,int> > -> toString
+-------------------------------------------------------------------------------
+ToStringPair.cpp:<line number>
+...............................................................................
+
+ToStringPair.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" )
+with expansion:
+  "{ { 42, "Arthur" }, { "Ford", 24 } }"
+  ==
+  "{ { 42, "Arthur" }, { "Ford", 24 } }"
+
+-------------------------------------------------------------------------------
+vector<int> -> toString
+-------------------------------------------------------------------------------
+ToStringVector.cpp:<line number>
+...............................................................................
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{  }" )
+with expansion:
+  "{  }" == "{  }"
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{ 42 }" )
+with expansion:
+  "{ 42 }" == "{ 42 }"
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{ 42, 512 }" )
+with expansion:
+  "{ 42, 512 }" == "{ 42, 512 }"
+
+-------------------------------------------------------------------------------
+vector<string> -> toString
+-------------------------------------------------------------------------------
+ToStringVector.cpp:<line number>
+...............................................................................
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{  }" )
+with expansion:
+  "{  }" == "{  }"
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{ \"hello\" }" )
+with expansion:
+  "{ "hello" }" == "{ "hello" }"
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{ \"hello\", \"world\" }" )
+with expansion:
+  "{ "hello", "world" }"
+  ==
+  "{ "hello", "world" }"
+
+-------------------------------------------------------------------------------
+vector<int,allocator> -> toString
+-------------------------------------------------------------------------------
+ToStringVector.cpp:<line number>
+...............................................................................
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{  }" )
+with expansion:
+  "{  }" == "{  }"
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{ 42 }" )
+with expansion:
+  "{ 42 }" == "{ 42 }"
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(vv) == "{ 42, 512 }" )
+with expansion:
+  "{ 42, 512 }" == "{ 42, 512 }"
+
+-------------------------------------------------------------------------------
+vec<vec<string,alloc>> -> toString
+-------------------------------------------------------------------------------
+ToStringVector.cpp:<line number>
+...............................................................................
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(v) == "{  }" )
+with expansion:
+  "{  }" == "{  }"
+
+ToStringVector.cpp:<line number>:
+PASSED:
+  REQUIRE( Catch::toString(v) == "{ { \"hello\" }, { \"world\" } }" )
+with expansion:
+  "{ { "hello" }, { "world" } }"
+  ==
+  "{ { "hello" }, { "world" } }"
+
+-------------------------------------------------------------------------------
 Parse test names and tags
   Empty test spec should have no filters
 -------------------------------------------------------------------------------
@@ -7375,6 +7675,6 @@
   true
 
 ===============================================================================
-test cases: 130 |  75 passed | 54 failed |  1 failed as expected
-assertions: 729 | 617 passed | 99 failed | 13 failed as expected
+test cases: 148 |  93 passed | 54 failed |  1 failed as expected
+assertions: 758 | 646 passed | 99 failed | 13 failed as expected
 
diff --git a/projects/SelfTest/Baselines/console.swa4.approved.txt b/projects/SelfTest/Baselines/console.swa4.approved.txt
index f48083e..276c93e 100644
--- a/projects/SelfTest/Baselines/console.swa4.approved.txt
+++ b/projects/SelfTest/Baselines/console.swa4.approved.txt
@@ -4,6 +4,78 @@
 Run with -? for options
 
 -------------------------------------------------------------------------------
+toString(enum)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "0" )
+with expansion:
+  "0" == "0"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "1" )
+with expansion:
+  "1" == "1"
+
+-------------------------------------------------------------------------------
+toString(enum w/operator<<)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "E2{0}" )
+with expansion:
+  "E2{0}" == "E2{0}"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "E2{1}" )
+with expansion:
+  "E2{1}" == "E2{1}"
+
+-------------------------------------------------------------------------------
+toString(enum class)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "0" )
+with expansion:
+  "0" == "0"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "1" )
+with expansion:
+  "1" == "1"
+
+-------------------------------------------------------------------------------
+toString(enum class w/operator<<)
+-------------------------------------------------------------------------------
+EnumToString.cpp:<line number>
+...............................................................................
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e0) == "E2/V0" )
+with expansion:
+  "E2/V0" == "E2/V0"
+
+EnumToString.cpp:<line number>:
+PASSED:
+  CHECK( Catch::toString(e1) == "E2/V1" )
+with expansion:
+  "E2/V1" == "E2/V1"
+
+-------------------------------------------------------------------------------
 Some simple comparisons between doubles
 -------------------------------------------------------------------------------
 ApproxTests.cpp:<line number>
@@ -406,6 +478,6 @@
   9.1f != Approx( 9.1000003815 )
 
 ===============================================================================
-test cases: 15 | 11 passed | 3 failed | 1 failed as expected
-assertions: 53 | 47 passed | 4 failed | 2 failed as expected
+test cases: 19 | 15 passed | 3 failed | 1 failed as expected
+assertions: 61 | 55 passed | 4 failed | 2 failed as expected
 
diff --git a/projects/SelfTest/Baselines/junit.sw.approved.txt b/projects/SelfTest/Baselines/junit.sw.approved.txt
index 450c09f..7ce10d7 100644
--- a/projects/SelfTest/Baselines/junit.sw.approved.txt
+++ b/projects/SelfTest/Baselines/junit.sw.approved.txt
@@ -1,5 +1,9 @@
 <testsuites>
-  <testsuite errors="12" failures="87" tests="729" hostname="tbd" time="{duration}" timestamp="tbd">
+  <testsuite errors="12" failures="87" tests="758" hostname="tbd" time="{duration}" timestamp="tbd">
+    <testcase classname="global" name="toString(enum)" time="{duration}"/>
+    <testcase classname="global" name="toString(enum w/operator&lt;&lt;)" time="{duration}"/>
+    <testcase classname="global" name="toString(enum class)" time="{duration}"/>
+    <testcase classname="global" name="toString(enum class w/operator&lt;&lt;)" time="{duration}"/>
     <testcase classname="global" name="Some simple comparisons between doubles" time="{duration}"/>
     <testcase classname="global" name="Approximate comparisons with different epsilons" time="{duration}"/>
     <testcase classname="global" name="Approximate comparisons with floats" time="{duration}"/>
@@ -529,6 +533,20 @@
     <testcase classname="global" name="X/level/0/b" time="{duration}"/>
     <testcase classname="global" name="X/level/1/a" time="{duration}"/>
     <testcase classname="global" name="X/level/1/b" time="{duration}"/>
+    <testcase classname="global" name="toString( has_toString )" time="{duration}"/>
+    <testcase classname="global" name="toString( has_maker )" time="{duration}"/>
+    <testcase classname="global" name="toString( has_maker_and_toString )" time="{duration}"/>
+    <testcase classname="global" name="toString( vectors&lt;has_toString )" time="{duration}"/>
+    <testcase classname="global" name="toString( vectors&lt;has_maker )" time="{duration}"/>
+    <testcase classname="global" name="toString( vectors&lt;has_maker_and_toString )" time="{duration}"/>
+    <testcase classname="global" name="std::pair&lt;int,std::string> -> toString" time="{duration}"/>
+    <testcase classname="global" name="std::pair&lt;int,const std::string> -> toString" time="{duration}"/>
+    <testcase classname="global" name="std::vector&lt;std::pair&lt;std::string,int> > -> toString" time="{duration}"/>
+    <testcase classname="global" name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString" time="{duration}"/>
+    <testcase classname="global" name="vector&lt;int> -> toString" time="{duration}"/>
+    <testcase classname="global" name="vector&lt;string> -> toString" time="{duration}"/>
+    <testcase classname="global" name="vector&lt;int,allocator> -> toString" time="{duration}"/>
+    <testcase classname="global" name="vec&lt;vec&lt;string,alloc>> -> toString" time="{duration}"/>
     <testcase classname="Parse test names and tags" name="Empty test spec should have no filters" time="{duration}"/>
     <testcase classname="Parse test names and tags" name="Test spec from empty string should have no filters" time="{duration}"/>
     <testcase classname="Parse test names and tags" name="Test spec from just a comma should have no filters" time="{duration}"/>
diff --git a/projects/SelfTest/Baselines/xml.sw.approved.txt b/projects/SelfTest/Baselines/xml.sw.approved.txt
index 2011abf..5c06f6e 100644
--- a/projects/SelfTest/Baselines/xml.sw.approved.txt
+++ b/projects/SelfTest/Baselines/xml.sw.approved.txt
@@ -1,5 +1,81 @@
 <Catch name="CatchSelfTest">
   <Group>
+    <TestCase name="toString(enum)">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e0) == &quot;0&quot;
+        </Original>
+        <Expanded>
+          &quot;0&quot; == &quot;0&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e1) == &quot;1&quot;
+        </Original>
+        <Expanded>
+          &quot;1&quot; == &quot;1&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString(enum w/operator&lt;&lt;)">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e0) == &quot;E2{0}&quot;
+        </Original>
+        <Expanded>
+          &quot;E2{0}&quot; == &quot;E2{0}&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e1) == &quot;E2{1}&quot;
+        </Original>
+        <Expanded>
+          &quot;E2{1}&quot; == &quot;E2{1}&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString(enum class)">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e0) == &quot;0&quot;
+        </Original>
+        <Expanded>
+          &quot;0&quot; == &quot;0&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e1) == &quot;1&quot;
+        </Original>
+        <Expanded>
+          &quot;1&quot; == &quot;1&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString(enum class w/operator&lt;&lt;)">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e0) == &quot;E2/V0&quot;
+        </Original>
+        <Expanded>
+          &quot;E2/V0&quot; == &quot;E2/V0&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/EnumToString.cpp" >
+        <Original>
+          Catch::toString(e1) == &quot;E2/V1&quot;
+        </Original>
+        <Expanded>
+          &quot;E2/V1&quot; == &quot;E2/V1&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
     <TestCase name="Some simple comparisons between doubles">
       <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ApproxTests.cpp" >
         <Original>
@@ -6030,6 +6106,234 @@
     <TestCase name="X/level/1/b">
       <OverallResult success="true"/>
     </TestCase>
+    <TestCase name="toString( has_toString )">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringWhich.cpp" >
+        <Original>
+          Catch::toString( item ) == &quot;toString( has_toString )&quot;
+        </Original>
+        <Expanded>
+          &quot;toString( has_toString )&quot;
+==
+&quot;toString( has_toString )&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString( has_maker )">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringWhich.cpp" >
+        <Original>
+          Catch::toString( item ) == &quot;StringMaker&lt;has_maker>&quot;
+        </Original>
+        <Expanded>
+          &quot;StringMaker&lt;has_maker>&quot;
+==
+&quot;StringMaker&lt;has_maker>&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString( has_maker_and_toString )">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringWhich.cpp" >
+        <Original>
+          Catch::toString( item ) == &quot;toString( has_maker_and_toString )&quot;
+        </Original>
+        <Expanded>
+          &quot;toString( has_maker_and_toString )&quot;
+==
+&quot;toString( has_maker_and_toString )&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString( vectors&lt;has_toString )">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringWhich.cpp" >
+        <Original>
+          Catch::toString( v ) == &quot;{ {?} }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ {?} }&quot; == &quot;{ {?} }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString( vectors&lt;has_maker )">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringWhich.cpp" >
+        <Original>
+          Catch::toString( v ) == &quot;{ StringMaker&lt;has_maker> }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ StringMaker&lt;has_maker> }&quot;
+==
+&quot;{ StringMaker&lt;has_maker> }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="toString( vectors&lt;has_maker_and_toString )">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringWhich.cpp" >
+        <Original>
+          Catch::toString( v ) == &quot;{ StringMaker&lt;has_maker_and_toString> }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ StringMaker&lt;has_maker_and_toString> }&quot;
+==
+&quot;{ StringMaker&lt;has_maker_and_toString> }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="std::pair&lt;int,std::string> -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringPair.cpp" >
+        <Original>
+          Catch::toString( value ) == &quot;{ 34, \&quot;xyzzy\&quot; }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ 34, &quot;xyzzy&quot; }&quot; == &quot;{ 34, &quot;xyzzy&quot; }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="std::pair&lt;int,const std::string> -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringPair.cpp" >
+        <Original>
+          Catch::toString(value) == &quot;{ 34, \&quot;xyzzy\&quot; }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ 34, &quot;xyzzy&quot; }&quot; == &quot;{ 34, &quot;xyzzy&quot; }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="std::vector&lt;std::pair&lt;std::string,int> > -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringPair.cpp" >
+        <Original>
+          Catch::toString( pr ) == &quot;{ { \&quot;green\&quot;, 55 } }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ { &quot;green&quot;, 55 } }&quot;
+==
+&quot;{ { &quot;green&quot;, 55 } }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringPair.cpp" >
+        <Original>
+          Catch::toString( pair ) == &quot;{ { 42, \&quot;Arthur\&quot; }, { \&quot;Ford\&quot;, 24 } }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ { 42, &quot;Arthur&quot; }, { &quot;Ford&quot;, 24 } }&quot;
+==
+&quot;{ { 42, &quot;Arthur&quot; }, { &quot;Ford&quot;, 24 } }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="vector&lt;int> -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{  }&quot;
+        </Original>
+        <Expanded>
+          &quot;{  }&quot; == &quot;{  }&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{ 42 }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ 42 }&quot; == &quot;{ 42 }&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{ 42, 512 }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ 42, 512 }&quot; == &quot;{ 42, 512 }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="vector&lt;string> -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{  }&quot;
+        </Original>
+        <Expanded>
+          &quot;{  }&quot; == &quot;{  }&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{ \&quot;hello\&quot; }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ &quot;hello&quot; }&quot; == &quot;{ &quot;hello&quot; }&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{ \&quot;hello\&quot;, \&quot;world\&quot; }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ &quot;hello&quot;, &quot;world&quot; }&quot;
+==
+&quot;{ &quot;hello&quot;, &quot;world&quot; }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="vector&lt;int,allocator> -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{  }&quot;
+        </Original>
+        <Expanded>
+          &quot;{  }&quot; == &quot;{  }&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{ 42 }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ 42 }&quot; == &quot;{ 42 }&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(vv) == &quot;{ 42, 512 }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ 42, 512 }&quot; == &quot;{ 42, 512 }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="vec&lt;vec&lt;string,alloc>> -> toString">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(v) == &quot;{  }&quot;
+        </Original>
+        <Expanded>
+          &quot;{  }&quot; == &quot;{  }&quot;
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/ToStringVector.cpp" >
+        <Original>
+          Catch::toString(v) == &quot;{ { \&quot;hello\&quot; }, { \&quot;world\&quot; } }&quot;
+        </Original>
+        <Expanded>
+          &quot;{ { &quot;hello&quot; }, { &quot;world&quot; } }&quot;
+==
+&quot;{ { &quot;hello&quot; }, { &quot;world&quot; } }&quot;
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
     <TestCase name="Parse test names and tags">
       <Section name="Empty test spec should have no filters">
         <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch-Dev/projects/SelfTest/CmdLineTests.cpp" >
@@ -7636,7 +7940,7 @@
       </Section>
       <OverallResult success="true"/>
     </TestCase>
-    <OverallResults successes="617" failures="99" expectedFailures="13"/>
+    <OverallResults successes="646" failures="99" expectedFailures="13"/>
   </Group>
-  <OverallResults successes="617" failures="99" expectedFailures="13"/>
+  <OverallResults successes="646" failures="99" expectedFailures="13"/>
 </Catch>