Index: code/branches/cpp11_v3/test/util/MathTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/MathTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/MathTest.cc	(revision 11054)
@@ -245,8 +245,8 @@
 
         // all numbers must satisfy 0 <= <number> < 1
-        for (std::set<float>::iterator it = numbers.begin(); it != numbers.end(); ++it)
+        for (float number : numbers)
         {
-            EXPECT_LE(min, *it);
-            EXPECT_GT(max, *it);
+            EXPECT_LE(min, number);
+            EXPECT_GT(max, number);
         }
     }
@@ -268,8 +268,8 @@
 
         // all numbers must satisfy 0 <= <number> < <max>
-        for (std::set<float>::iterator it = numbers.begin(); it != numbers.end(); ++it)
+        for (float number : numbers)
         {
-            EXPECT_LE(min, *it);
-            EXPECT_GT(max, *it);
+            EXPECT_LE(min, number);
+            EXPECT_GT(max, number);
         }
     }
@@ -291,8 +291,8 @@
 
         // all numbers must satisfy <min> <= <number> < <max>
-        for (std::set<float>::iterator it = numbers.begin(); it != numbers.end(); ++it)
+        for (float number : numbers)
         {
-            EXPECT_LE(min, *it);
-            EXPECT_GT(max, *it);
+            EXPECT_LE(min, number);
+            EXPECT_GT(max, number);
         }
     }
@@ -315,6 +315,6 @@
 
         // all numbers must be either 1 oder -1
-        for (std::set<float>::iterator it = numbers.begin(); it != numbers.end(); ++it)
-            EXPECT_TRUE(*it == 1 || *it == -1);
+        for (float number : numbers)
+            EXPECT_TRUE(number == 1 || number == -1);
     }
 
Index: code/branches/cpp11_v3/test/util/SharedPtrTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/SharedPtrTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/SharedPtrTest.cc	(revision 11054)
@@ -1,5 +1,6 @@
+#include <memory>
+#include <utility>
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
-#include "util/SharedPtr.h"
 
 namespace orxonox
@@ -27,9 +28,9 @@
         };
 
-        class TestClassMock : public TestClass
+        class TestChildClassMock : public TestChildClass
         {
             public:
-                TestClassMock() {}
-                ~TestClassMock() { objectDestroyed(); }
+                TestChildClassMock() {}
+                ~TestChildClassMock() { objectDestroyed(); }
 
                 MOCK_METHOD0(objectDestroyed, void());
@@ -39,6 +40,6 @@
     TEST(SharedPtr, ConstructorDefault)
     {
-        SharedPtr<TestClass> test;
-        EXPECT_EQ(0, test.get());
+        std::shared_ptr<TestClass> test;
+        EXPECT_EQ(nullptr, test.get());
     }
 
@@ -47,6 +48,7 @@
         TestClass* pointer = new TestClass();
 
-        SharedPtr<TestClass> test = pointer;
-        EXPECT_EQ(pointer, test.get());
+        std::shared_ptr<TestClass> test(pointer);
+        EXPECT_EQ(pointer, test.get());
+        EXPECT_EQ(pointer, &(*test));
     }
 
@@ -55,5 +57,5 @@
         TestChildClass* pointer = new TestChildClass();
 
-        SharedPtr<TestClass> test = pointer;
+        std::shared_ptr<TestClass> test(pointer);
         EXPECT_EQ(pointer, test.get());
     }
@@ -63,8 +65,8 @@
         TestClass* pointer = new TestClass();
 
-        SharedPtr<TestClass> other = pointer;
-        EXPECT_EQ(pointer, other.get());
-
-        SharedPtr<TestClass> test = other;
+        std::shared_ptr<TestClass> other(pointer);
+        EXPECT_EQ(pointer, other.get());
+
+        std::shared_ptr<TestClass> test = other;
         EXPECT_EQ(pointer, test.get());
     }
@@ -74,8 +76,8 @@
         TestChildClass* pointer = new TestChildClass();
 
-        SharedPtr<TestChildClass> other = pointer;
-        EXPECT_EQ(pointer, other.get());
-
-        SharedPtr<TestClass> test = other;
+        std::shared_ptr<TestChildClass> other(pointer);
+        EXPECT_EQ(pointer, other.get());
+
+        std::shared_ptr<TestClass> test = other;
         EXPECT_EQ(pointer, test.get());
     }
@@ -85,9 +87,9 @@
         TestClass* pointer = new TestClass();
 
-        SharedPtr<TestClass> other = pointer;
-        EXPECT_EQ(pointer, other.get());
-
-        SharedPtr<TestClass> test;
-        EXPECT_EQ(0, test.get());
+        std::shared_ptr<TestClass> other(pointer);
+        EXPECT_EQ(pointer, other.get());
+
+        std::shared_ptr<TestClass> test;
+        EXPECT_EQ(nullptr, test.get());
 
         test = other;
@@ -99,9 +101,9 @@
         TestChildClass* pointer = new TestChildClass();
 
-        SharedPtr<TestChildClass> other = pointer;
-        EXPECT_EQ(pointer, other.get());
-
-        SharedPtr<TestClass> test;
-        EXPECT_EQ(0, test.get());
+        std::shared_ptr<TestChildClass> other(pointer);
+        EXPECT_EQ(pointer, other.get());
+
+        std::shared_ptr<TestClass> test;
+        EXPECT_EQ(nullptr, test.get());
 
         test = other;
@@ -113,8 +115,8 @@
         TestChildClass* pointer = new TestChildClass();
 
-        SharedPtr<TestChildClass> other = pointer;
-        EXPECT_EQ(pointer, other.get());
-
-        SharedPtr<TestClass> test = other.cast<TestClass>();
+        std::shared_ptr<TestChildClass> other(pointer);
+        EXPECT_EQ(pointer, other.get());
+
+        std::shared_ptr<TestClass> test = std::static_pointer_cast<TestClass>(other);
         EXPECT_EQ(pointer, test.get());
     }
@@ -124,5 +126,5 @@
         TestClass* pointer = new TestClass();
 
-        SharedPtr<TestClass> test = pointer;
+        std::shared_ptr<TestClass> test(pointer);
         EXPECT_EQ(pointer, test.get());
 
@@ -135,13 +137,13 @@
     TEST(SharedPtr, Boolean)
     {
-        SharedPtr<TestClass> test;
-        EXPECT_EQ(0, test.get());
+        std::shared_ptr<TestClass> test;
+        EXPECT_EQ(nullptr, test.get());
         EXPECT_FALSE(test);
 
         TestClass* pointer = new TestClass();
 
-        test = pointer;
-        EXPECT_EQ(pointer, test.get());
-        EXPECT_TRUE(test);
+        test.reset(pointer);
+        EXPECT_EQ(pointer, test.get());
+        EXPECT_TRUE(static_cast<bool>(test));
     }
 
@@ -151,6 +153,6 @@
         TestClass* pointer2 = new TestClass();
 
-        SharedPtr<TestClass> test1 = pointer1;
-        SharedPtr<TestClass> test2 = pointer2;
+        std::shared_ptr<TestClass> test1(pointer1);
+        std::shared_ptr<TestClass> test2(pointer2);
 
         EXPECT_EQ(pointer1, test1.get());
@@ -165,6 +167,6 @@
     TEST(SharedPtr, ObjectDestroyedOnePointer)
     {
-        TestClassMock* pointer = new TestClassMock();
-        SharedPtr<TestClass> test = pointer;
+        TestChildClassMock* pointer = new TestChildClassMock();
+        std::shared_ptr<TestClass> test(pointer);
 
         EXPECT_CALL(*pointer, objectDestroyed()).Times(1);
@@ -173,10 +175,93 @@
     TEST(SharedPtr, ObjectDestroyedManyPointers)
     {
-        TestClassMock* pointer = new TestClassMock();
-
-        SharedPtr<TestClass> test = pointer;
-        std::vector<SharedPtr<TestClass> > tests;
+        TestChildClassMock* pointer = new TestChildClassMock();
+
+        std::shared_ptr<TestClass> test(pointer);
+        std::vector<std::shared_ptr<TestClass>> tests;
         for (size_t i = 0; i < 100; ++i)
-            tests.push_back(SharedPtr<TestClass>(test));
+            tests.push_back(std::shared_ptr<TestClass>(test));
+
+        EXPECT_CALL(*pointer, objectDestroyed()).Times(1);
+    }
+
+    TEST(SharedPtr, TestConstructors)
+    {
+        {
+        TestChildClassMock* pointer = new TestChildClassMock();
+
+        // default
+        std::shared_ptr<TestChildClass> sharedPtr1;
+        EXPECT_EQ(nullptr, sharedPtr1.get());
+
+        // pointer
+        std::shared_ptr<TestChildClass> sharedPtr2(pointer);
+        EXPECT_EQ(pointer, sharedPtr2.get());
+
+        // copy
+        std::shared_ptr<TestChildClass> sharedPtr3(sharedPtr2);
+        EXPECT_EQ(pointer, sharedPtr3.get());
+
+        // move
+        std::shared_ptr<TestChildClass> sharedPtr4(std::move(sharedPtr3));
+        EXPECT_EQ(pointer, sharedPtr4.get());
+
+        // other
+        std::shared_ptr<TestClass> sharedPtr5(sharedPtr4);
+        EXPECT_EQ(pointer, sharedPtr5.get());
+
+        EXPECT_CALL(*pointer, objectDestroyed()).Times(1);
+        }
+    }
+
+    TEST(SharedPtr, TestConstructors2)
+    {
+        {
+        TestChildClassMock* pointer = new TestChildClassMock();
+
+        // default
+        std::shared_ptr<TestChildClass> sharedPtr1;
+        EXPECT_EQ(nullptr, sharedPtr1.get());
+
+        // pointer
+        std::shared_ptr<TestChildClass> sharedPtr2(pointer);
+        EXPECT_EQ(pointer, sharedPtr2.get());
+
+        // copy
+        std::shared_ptr<TestChildClass> sharedPtr3 = sharedPtr2;
+        EXPECT_EQ(pointer, sharedPtr3.get());
+
+        // move
+        std::shared_ptr<TestChildClass> sharedPtr4 = std::move(sharedPtr3);
+        EXPECT_EQ(pointer, sharedPtr4.get());
+
+        // other
+        std::shared_ptr<TestClass> sharedPtr5 = sharedPtr4;
+        EXPECT_EQ(pointer, sharedPtr5.get());
+
+        EXPECT_CALL(*pointer, objectDestroyed()).Times(1);
+        }
+    }
+
+    TEST(SharedPtr, TestAssignments)
+    {
+        TestChildClassMock* pointer = new TestChildClassMock();
+
+        std::shared_ptr<TestChildClass> sharedPtr1(pointer);
+        EXPECT_EQ(pointer, sharedPtr1.get());
+
+        // copy
+        std::shared_ptr<TestChildClass> sharedPtr2;
+        sharedPtr2 = sharedPtr1;
+        EXPECT_EQ(pointer, sharedPtr2.get());
+
+        // move
+        std::shared_ptr<TestChildClass> sharedPtr3;
+        sharedPtr3 = std::move(sharedPtr2);
+        EXPECT_EQ(pointer, sharedPtr3.get());
+
+        // other
+        std::shared_ptr<TestClass> sharedPtr4;
+        sharedPtr4 = sharedPtr3;
+        EXPECT_EQ(pointer, sharedPtr4.get());
 
         EXPECT_CALL(*pointer, objectDestroyed()).Times(1);
Index: code/branches/cpp11_v3/test/util/SingletonTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/SingletonTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/SingletonTest.cc	(revision 11054)
@@ -23,5 +23,5 @@
         };
 
-        TestSingleton* TestSingleton::singletonPtr_s = NULL;
+        TestSingleton* TestSingleton::singletonPtr_s = nullptr;
         const size_t TestSingleton::MAGIC_VALUE = 0xCAFEBABE;
     }
Index: code/branches/cpp11_v3/test/util/SmallObjectAllocatorTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/SmallObjectAllocatorTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/SmallObjectAllocatorTest.cc	(revision 11054)
@@ -47,5 +47,5 @@
         // create an integer
         size_t* pointer = this->create(5);
-        ASSERT_NE((void*)0, pointer);
+        ASSERT_NE((void*)nullptr, pointer);
         EXPECT_EQ(5u, *pointer);
     }
@@ -55,5 +55,5 @@
         // create an integer
         size_t* pointer = this->create(5);
-        ASSERT_NE((void*)0, pointer);
+        ASSERT_NE((void*)nullptr, pointer);
         EXPECT_EQ(5u, *pointer);
 
@@ -228,5 +228,5 @@
         // create an object
         SmallObject* pointer = this->create(5);
-        ASSERT_NE((void*)0, pointer);
+        ASSERT_NE((void*)nullptr, pointer);
         EXPECT_EQ(5u, pointer->getValue());
         EXPECT_EQ(5u, SmallObject::total_s);
@@ -239,5 +239,5 @@
         // create an object
         SmallObject* pointer = this->create(5);
-        ASSERT_NE((void*)0, pointer);
+        ASSERT_NE((void*)nullptr, pointer);
         EXPECT_EQ(5u, pointer->getValue());
         EXPECT_EQ(5u, SmallObject::total_s);
Index: code/branches/cpp11_v3/test/util/output/BaseWriterTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/output/BaseWriterTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/output/BaseWriterTest.cc	(revision 11054)
@@ -30,5 +30,5 @@
                 MOCK_METHOD2(printLine, void(const std::string&, OutputLevel));
 
-                virtual void output(OutputLevel level, const OutputContextContainer& context, const std::vector<std::string>& lines)
+                virtual void output(OutputLevel level, const OutputContextContainer& context, const std::vector<std::string>& lines) override
                     { this->BaseWriter::output(level, context, lines); }
         };
Index: code/branches/cpp11_v3/test/util/output/ConsoleWriterTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/output/ConsoleWriterTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/output/ConsoleWriterTest.cc	(revision 11054)
@@ -3,5 +3,4 @@
 #include "util/output/ConsoleWriter.h"
 #include "util/output/OutputManager.h"
-#include "util/SharedPtr.h"
 
 namespace orxonox
@@ -13,11 +12,11 @@
         {
             public:
-                virtual void SetUp()
+                virtual void SetUp() override
                 {
                     // reset output manager
-                    OutputManager::Testing::getInstancePointer() = new OutputManager();
+                    OutputManager::Testing::getInstancePointer().reset(new OutputManager());
                 }
 
-                virtual void TearDown()
+                virtual void TearDown() override
                 {
                 }
@@ -27,5 +26,5 @@
     TEST_F(ConsoleWriterTest, Disable)
     {
-        std::ostream stream(NULL);
+        std::ostream stream(nullptr);
         EXPECT_EQ(0U, OutputManager::getInstance().getListeners().size());
         ConsoleWriter writer(stream);
@@ -37,5 +36,5 @@
     TEST_F(ConsoleWriterTest, Enable)
     {
-        std::ostream stream(NULL);
+        std::ostream stream(nullptr);
         ConsoleWriter writer(stream);
         writer.disable();
Index: code/branches/cpp11_v3/test/util/output/LogWriterTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/output/LogWriterTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/output/LogWriterTest.cc	(revision 11054)
@@ -4,5 +4,4 @@
 #include "util/Convert.h"
 #include "util/output/OutputManager.h"
-#include "util/SharedPtr.h"
 
 namespace orxonox
@@ -13,5 +12,5 @@
         {
             public:
-                virtual void printLine(const std::string& line, OutputLevel level)
+                virtual void printLine(const std::string& line, OutputLevel level) override
                     { this->LogWriter::printLine(line, level); }
         };
@@ -21,11 +20,11 @@
         {
             public:
-                virtual void SetUp()
+                virtual void SetUp() override
                 {
                     // reset output manager
-                    OutputManager::Testing::getInstancePointer() = new OutputManager();
+                    OutputManager::Testing::getInstancePointer().reset(new OutputManager());
                 }
 
-                virtual void TearDown()
+                virtual void TearDown() override
                 {
                 }
@@ -138,4 +137,6 @@
         std::string line = getLineWhichContains(path, "myothertestoutput");
         EXPECT_FALSE(line.empty());
+        ASSERT_TRUE(line.length() > 12);
+
         EXPECT_TRUE(isdigit(line[0]));
         EXPECT_TRUE(isdigit(line[1]));
@@ -146,5 +147,9 @@
         EXPECT_TRUE(isdigit(line[6]));
         EXPECT_TRUE(isdigit(line[7]));
-        EXPECT_EQ(' ', line[8]);
+        EXPECT_EQ(':', line[8]);
+        EXPECT_TRUE(isdigit(line[9]));
+        EXPECT_TRUE(isdigit(line[10]));
+        EXPECT_TRUE(isdigit(line[11]));
+        EXPECT_EQ(' ', line[12]);
     }
 
Index: code/branches/cpp11_v3/test/util/output/MemoryWriterTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/output/MemoryWriterTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/output/MemoryWriterTest.cc	(revision 11054)
@@ -4,5 +4,4 @@
 #include "util/output/MemoryWriter.h"
 #include "util/output/OutputManager.h"
-#include "util/SharedPtr.h"
 
 namespace orxonox
@@ -20,11 +19,11 @@
         {
             public:
-                virtual void SetUp()
+                virtual void SetUp() override
                 {
                     // reset output manager
-                    OutputManager::Testing::getInstancePointer() = new OutputManager();
+                    OutputManager::Testing::getInstancePointer().reset(new OutputManager());
                 }
 
-                virtual void TearDown()
+                virtual void TearDown() override
                 {
                 }
Index: code/branches/cpp11_v3/test/util/output/OutputListenerTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/output/OutputListenerTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/output/OutputListenerTest.cc	(revision 11054)
@@ -3,5 +3,4 @@
 #include "util/output/OutputListener.h"
 #include "util/output/OutputManager.h"
-#include "util/SharedPtr.h"
 
 namespace orxonox
@@ -342,10 +341,10 @@
             {
                 this->manager_ = new MockOutputManager();
-                OutputManager::Testing::getInstancePointer() = this->manager_;
+                OutputManager::Testing::getInstancePointer().reset(this->manager_);
             }
 
             virtual void TearDown()
             {
-                OutputManager::Testing::getInstancePointer() = new OutputManager();
+                OutputManager::Testing::getInstancePointer().reset(new OutputManager());
             }
 
Index: code/branches/cpp11_v3/test/util/output/OutputManagerTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/output/OutputManagerTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/output/OutputManagerTest.cc	(revision 11054)
@@ -54,7 +54,7 @@
     TEST(OutputManagerTest, GetInstanceDoesNotCreateDefaultListeners)
     {
-        EXPECT_TRUE(NULL == OutputManager::getInstance().getMemoryWriter());
-        EXPECT_TRUE(NULL == OutputManager::getInstance().getConsoleWriter());
-        EXPECT_TRUE(NULL == OutputManager::getInstance().getLogWriter());
+        EXPECT_TRUE(nullptr == OutputManager::getInstance().getMemoryWriter());
+        EXPECT_TRUE(nullptr == OutputManager::getInstance().getConsoleWriter());
+        EXPECT_TRUE(nullptr == OutputManager::getInstance().getLogWriter());
     }
 
@@ -62,7 +62,7 @@
     TEST(OutputManagerTest, GetInstanceAndCreateListenersCreatesDefaultListeners)
     {
-        EXPECT_TRUE(NULL != OutputManager::getInstanceAndCreateListeners().getMemoryWriter());
-        EXPECT_TRUE(NULL != OutputManager::getInstanceAndCreateListeners().getConsoleWriter());
-        EXPECT_TRUE(NULL != OutputManager::getInstanceAndCreateListeners().getLogWriter());
+        EXPECT_TRUE(nullptr != OutputManager::getInstanceAndCreateListeners().getMemoryWriter());
+        EXPECT_TRUE(nullptr != OutputManager::getInstanceAndCreateListeners().getConsoleWriter());
+        EXPECT_TRUE(nullptr != OutputManager::getInstanceAndCreateListeners().getLogWriter());
     }
 
Index: code/branches/cpp11_v3/test/util/output/OutputStreamTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/output/OutputStreamTest.cc	(revision 11053)
+++ code/branches/cpp11_v3/test/util/output/OutputStreamTest.cc	(revision 11054)
@@ -8,5 +8,4 @@
 #include "util/output/OutputManager.h"
 #include "util/output/MemoryWriter.h"
-#include "util/SharedPtr.h"
 
 namespace orxonox
@@ -88,10 +87,10 @@
             {
                 this->manager_ = new MockOutputManager();
-                OutputManager::Testing::getInstancePointer() = this->manager_;
+                OutputManager::Testing::getInstancePointer().reset(this->manager_);
             }
 
             virtual void TearDown()
             {
-                OutputManager::Testing::getInstancePointer() = new OutputManager();
+                OutputManager::Testing::getInstancePointer().reset(new OutputManager());
             }
 
