build 4
diff --git a/README.md b/README.md
index 8bca9e5..9e2c136 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 ![catch logo](catch-logo-small.png)
 
-*v1.0 build 3 (master branch)*
+*v1.0 build 4 (master branch)*
 
 # New release with significant changes
 
diff --git a/include/internal/catch_version.hpp b/include/internal/catch_version.hpp
index 04d86c7..220ed92 100644
--- a/include/internal/catch_version.hpp
+++ b/include/internal/catch_version.hpp
@@ -13,7 +13,7 @@
 namespace Catch {
 
     // These numbers are maintained by a script
-    Version libraryVersion( 1, 0, 3, "master" );
+    Version libraryVersion( 1, 0, 4, "master" );
 }
 
 #endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED
diff --git a/projects/SelfTest/Baselines/approvedResults.txt b/projects/SelfTest/Baselines/approvedResults.txt
index b698826..4e8c975 100644
--- a/projects/SelfTest/Baselines/approvedResults.txt
+++ b/projects/SelfTest/Baselines/approvedResults.txt
@@ -1,6 +1,6 @@
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-CatchSelfTest is a Catch v1.0 b3 host application.
+CatchSelfTest is a Catch v1.0 b4 host application.
 Run with -? for options
 
 -------------------------------------------------------------------------------
@@ -678,11 +678,11 @@
   "first" == "second"
 
 ===============================================================================
-113 test cases - 34 failed (686 assertions - 87 failed)
+119 test cases - 34 failed (693 assertions - 87 failed)
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-CatchSelfTest is a Catch v1.0 b3 host application.
+CatchSelfTest is a Catch v1.0 b4 host application.
 Run with -? for options
 
 -------------------------------------------------------------------------------
@@ -5792,6 +5792,72 @@
   "7" == "7"
 
 -------------------------------------------------------------------------------
+Comparing function pointers
+-------------------------------------------------------------------------------
+TrickyTests.cpp
+...............................................................................
+
+TrickyTests.cpp:
+PASSED:
+  REQUIRE( a )
+with expansion:
+  true
+
+TrickyTests.cpp:
+PASSED:
+  REQUIRE( a == &foo )
+with expansion:
+  1 == 1
+
+-------------------------------------------------------------------------------
+pointer to class
+-------------------------------------------------------------------------------
+TrickyTests.cpp
+...............................................................................
+
+TrickyTests.cpp:
+PASSED:
+  REQUIRE( p == 0 )
+with expansion:
+  __null == 0
+
+-------------------------------------------------------------------------------
+X/level/0/a
+-------------------------------------------------------------------------------
+TrickyTests.cpp
+...............................................................................
+
+TrickyTests.cpp:
+PASSED:
+
+-------------------------------------------------------------------------------
+X/level/0/b
+-------------------------------------------------------------------------------
+TrickyTests.cpp
+...............................................................................
+
+TrickyTests.cpp:
+PASSED:
+
+-------------------------------------------------------------------------------
+X/level/1/a
+-------------------------------------------------------------------------------
+TrickyTests.cpp
+...............................................................................
+
+TrickyTests.cpp:
+PASSED:
+
+-------------------------------------------------------------------------------
+X/level/1/b
+-------------------------------------------------------------------------------
+TrickyTests.cpp
+...............................................................................
+
+TrickyTests.cpp:
+PASSED:
+
+-------------------------------------------------------------------------------
 Anonymous test case 1
 -------------------------------------------------------------------------------
 VariadicMacrosTests.cpp
@@ -6246,13 +6312,13 @@
   "3rd" == "3rd"
 
 ===============================================================================
-113 test cases - 49 failed (705 assertions - 106 failed)
+119 test cases - 49 failed (712 assertions - 106 failed)
 
 No test cases matched '~dummy 4'
 No tests ran
 
 <testsuites>
-  <testsuite name="~dummy" errors="10" failures="78" tests="705" hostname="tbd" time="tbd" timestamp="tbd">
+  <testsuite name="~dummy" errors="10" failures="78" tests="712" hostname="tbd" time="tbd" timestamp="tbd">
     <testcase classname="global" name="./succeeding/Approx/simple" time="tbd"/>
     <testcase classname="global" name="./succeeding/Approx/epsilon" time="tbd"/>
     <testcase classname="global" name="./succeeding/Approx/float" time="tbd"/>
@@ -6752,6 +6818,12 @@
     <testcase classname="global" name="./succeeding/SafeBool" time="tbd"/>
     <testcase classname="global" name="Assertions then sections" time="tbd"/>
     <testcase classname="global" name="non streamable - with conv. op" time="tbd"/>
+    <testcase classname="global" name="Comparing function pointers" time="tbd"/>
+    <testcase classname="global" name="pointer to class" time="tbd"/>
+    <testcase classname="global" name="X/level/0/a" time="tbd"/>
+    <testcase classname="global" name="X/level/0/b" time="tbd"/>
+    <testcase classname="global" name="X/level/1/a" time="tbd"/>
+    <testcase classname="global" name="X/level/1/b" time="tbd"/>
     <testcase classname="global" name="Anonymous test case 1" time="tbd"/>
     <testcase classname="global" name="Test case with one argument" time="tbd"/>
     <testcase classname="global" name="Variadic macros" time="tbd"/>
@@ -12254,6 +12326,48 @@
       </Expression>
       <OverallResult success="true"/>
     </TestCase>
+    <TestCase name="Comparing function pointers">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/XCode4/CatchSelfTest/CatchSelfTest/../../../SelfTest/TrickyTests.cpp" >
+        <Original>
+          a
+        </Original>
+        <Expanded>
+          true
+        </Expanded>
+      </Expression>
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/XCode4/CatchSelfTest/CatchSelfTest/../../../SelfTest/TrickyTests.cpp" >
+        <Original>
+          a == &amp;foo
+        </Original>
+        <Expanded>
+          1 == 1
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="pointer to class">
+      <Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/XCode4/CatchSelfTest/CatchSelfTest/../../../SelfTest/TrickyTests.cpp" >
+        <Original>
+          p == 0
+        </Original>
+        <Expanded>
+          __null == 0
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="X/level/0/a">
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="X/level/0/b">
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="X/level/1/a">
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="X/level/1/b">
+      <OverallResult success="true"/>
+    </TestCase>
     <TestCase name="Anonymous test case 1">
       <OverallResult success="true"/>
     </TestCase>
@@ -12687,9 +12801,9 @@
       </Section>
       <OverallResult success="true"/>
     </TestCase>
-    <OverallResults successes="599" failures="106"/>
+    <OverallResults successes="606" failures="106"/>
   </Group>
-  <OverallResults successes="599" failures="106"/>
+  <OverallResults successes="606" failures="106"/>
 </Catch>
 [Started testing: CatchSelfTest]
 [Started group: '~dummy']
@@ -14354,6 +14468,31 @@
 TrickyTests.cpp: s == "7" succeeded for: "7" == "7"
 [Finished: 'non streamable - with conv. op' All tests passed (1 assertion in 1 test case)]
 
+[Running: Comparing function pointers]
+TrickyTests.cpp: a succeeded for: true
+TrickyTests.cpp: a == &foo succeeded for: 1 == 1
+[Finished: 'Comparing function pointers' All tests passed (2 assertions in 1 test case)]
+
+[Running: pointer to class]
+TrickyTests.cpp: p == 0 succeeded for: __null == 0
+[Finished: 'pointer to class' All tests passed (1 assertion in 1 test case)]
+
+[Running: X/level/0/a]
+TrickyTests.cpp:  succeeded
+[Finished: 'X/level/0/a' All tests passed (1 assertion in 1 test case)]
+
+[Running: X/level/0/b]
+TrickyTests.cpp:  succeeded
+[Finished: 'X/level/0/b' All tests passed (1 assertion in 1 test case)]
+
+[Running: X/level/1/a]
+TrickyTests.cpp:  succeeded
+[Finished: 'X/level/1/a' All tests passed (1 assertion in 1 test case)]
+
+[Running: X/level/1/b]
+TrickyTests.cpp:  succeeded
+[Finished: 'X/level/1/b' All tests passed (1 assertion in 1 test case)]
+
 [Running: Anonymous test case 1]
 VariadicMacrosTests.cpp:  succeeded
 [with message: anonymous test case]
@@ -14537,10 +14676,10 @@
 [End of section: 'positional' All 3 assertions passed]
 
 [Finished: 'cmdline' All tests passed (18 assertions in 1 test case)]
-[End of group: '~dummy'. 49 of 113 test cases failed (106 of 705 assertions failed)]
+[End of group: '~dummy'. 49 of 119 test cases failed (106 of 712 assertions failed)]
 
 
-[Testing completed. 49 of 113 test cases failed (106 of 705 assertions failed)]
+[Testing completed. 49 of 119 test cases failed (106 of 712 assertions failed)]
 
 
 [Testing completed. No tests ran]
diff --git a/single_include/catch.hpp b/single_include/catch.hpp
index 5c21830..b11289e 100644
--- a/single_include/catch.hpp
+++ b/single_include/catch.hpp
@@ -1,6 +1,6 @@
 /*
- *  CATCH v1.0 build 3 (master branch)
- *  Generated: 2013-06-29 20:29:59.351244
+ *  CATCH v1.0 build 4 (master branch)
+ *  Generated: 2013-07-01 19:01:40.450418
  *  ----------------------------------------------------------
  *  This file has been merged from multiple headers. Please don't edit it directly
  *  Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
@@ -707,7 +707,8 @@
 
 template<typename T>
 struct StringMaker<T*> {
-    static std::string convert( T const* p ) {
+	template<typename U>
+	static std::string convert( U* p ) {
         if( !p )
             return INTERNAL_CATCH_STRINGIFY( NULL );
         std::ostringstream oss;
@@ -5741,7 +5742,12 @@
 #ifndef NOMINMAX
 #define NOMINMAX
 #endif
+
+#ifdef __AFXDLL
+#include <AfxWin.h>
+#else
 #include <windows.h>
+#endif
 
 namespace Catch {
 namespace {
@@ -6226,7 +6232,7 @@
 namespace Catch {
 
     // These numbers are maintained by a script
-    Version libraryVersion( 1, 0, 3, "master" );
+    Version libraryVersion( 1, 0, 4, "master" );
 }
 
 // #included from: catch_text.hpp