     const auto ptr4 = v2.data();
     const auto size4 = v2.size();
 
-    ASSERT_EQUAL(ptr1, ptr2);
-    ASSERT_EQUAL(size1, size2);
+    // ensure v3 was left empty
+    ASSERT_EQUAL(true, v3.empty());
+
+    // ensure v2 received the data from before
+    ASSERT_EQUAL(v2[0], 3);
+    ASSERT_EQUAL(v2[1], 4);
+    ASSERT_EQUAL(v2[2], 5);
+    ASSERT_EQUAL(size3, size4);
+
+    // ensure v2 received the pointer from before
     ASSERT_EQUAL(ptr3, ptr4);
-    ASSERT_EQUAL(size3, size4);
   }
-  DECLARE_VECTOR_UNITTEST(TestVectorMoveSemantic);
+  DECLARE_VECTOR_UNITTEST(TestVectorMove);
 #endif
+


#if __cplusplus >= 201103L
  template <class Vector>
  void TestVectorMoveSemantic(void)
  {
    //test move construction
    Vector v1(3);
    const auto ptr1 = v1.data();
    const auto size1 = v1.size();


    const auto ptr2 = v2.data();
    const auto size2 = v2.size();

    // ensure v1 was left empty
    ASSERT_EQUAL(true, v1.empty());

    // ensure v2 received the data from before
    ASSERT_EQUAL(v2[0], 0);
    ASSERT_EQUAL(v2[1], 1);
    ASSERT_EQUAL(v2[2], 2);
    ASSERT_EQUAL(size1, size2);

    // ensure v2 received the pointer from before
    ASSERT_EQUAL(ptr1, ptr2);

    //test move assignment
    Vector v3(3);
    v3[0] = 3; v3[1] = 4; v3[2] = 5;

    const auto ptr3 = v3.data();
    const auto size3 = v3.size();

