Index: src/libchcore/TSharedModificationTracker.h
===================================================================
diff -u -r293e52b38d46653068006262172018a0f0d0a31c -ra5aa3c3cb78f3767641de2627d1a49a1dc35b429
--- src/libchcore/TSharedModificationTracker.h	(.../TSharedModificationTracker.h)	(revision 293e52b38d46653068006262172018a0f0d0a31c)
+++ src/libchcore/TSharedModificationTracker.h	(.../TSharedModificationTracker.h)	(revision a5aa3c3cb78f3767641de2627d1a49a1dc35b429)
@@ -31,19 +31,22 @@
 		m_tValue(),
 		m_rBitset(rBitset)
 	{
+		m_rBitset[ChangeBit] = true;
 	}
 
 	TSharedModificationTracker(const TSharedModificationTracker<T, Bitset, ChangeBit>& rSrc) :
 		m_tValue(rSrc.m_tValue),
 		m_rBitset(rSrc.m_rBitset)
 	{
+		m_rBitset[ChangeBit] = true;
 	}
 
 	template<class V>
 	TSharedModificationTracker(Bitset& rBitset, const V& rValue) :
 		m_tValue(rValue),
 		m_rBitset(rBitset)
 	{
+		m_rBitset[ChangeBit] = true;
 	}
 
 	TSharedModificationTracker& operator=(const TSharedModificationTracker<T, Bitset, ChangeBit>& rValue)
@@ -57,8 +60,7 @@
 		return *this;
 	}
 
-	template<class V>
-	TSharedModificationTracker& operator=(const V& rValue)
+	TSharedModificationTracker& operator=(const T& rValue)
 	{
 		if(m_tValue != rValue)
 		{
@@ -69,6 +71,15 @@
 		return *this;
 	}
 
+	template<class V>
+	TSharedModificationTracker& operator=(const V& rValue)
+	{
+		m_tValue = rValue;
+		m_rBitset[ChangeBit] = true;
+
+		return *this;
+	}
+
 	operator const T&() const
 	{
 		return m_tValue;