Fix MSVC compilation error

MSVC's `std::vector` requires its allocator to have copy constructor
from the same allocator kind, but templated over different type.
diff --git a/projects/SelfTest/ToStringVector.cpp b/projects/SelfTest/ToStringVector.cpp
index 002d8ef..eafe886 100644
--- a/projects/SelfTest/ToStringVector.cpp
+++ b/projects/SelfTest/ToStringVector.cpp
@@ -27,8 +27,14 @@
     /* Minimal Allocator */
     template<typename T>
     struct minimal_allocator {
-        typedef T value_type;
-        typedef std::size_t size_type;
+        using value_type = T;
+        using size_type = std::size_t;
+
+        minimal_allocator() = default;
+        template <typename U>
+        minimal_allocator(const minimal_allocator<U>&) {}
+
+
         T *allocate( size_type n ) {
             return static_cast<T *>( ::operator new( n * sizeof(T) ) );
         }
@@ -52,8 +58,8 @@
 }
 
 TEST_CASE( "vec<vec<string,alloc>> -> toString", "[toString][vector,allocator][c++11][.]" ) {
-    typedef std::vector<std::string,minimal_allocator<std::string> > inner;
-    typedef std::vector<inner> vector;
+    using inner = std::vector<std::string, minimal_allocator<std::string>>;
+    using vector = std::vector<inner>;
     vector v;
     REQUIRE( Catch::toString(v) == "{  }" );
     v.push_back( inner { "hello" } );