Sure, these ones are causing problems atm:

Code:

CThreadCPPType<int> MyInt;
CCPPType<int> MyInt2;
MyInt = 100;
MyInt = MyInt + 100;
MyInt = MyInt - 100;
MyInt = MyInt * 2;
MyInt = MyInt / 2;
MyInt -= 100;
MyInt += 100;
MyInt *= 100;
MyInt /= 100;
CThreadCPPType<int> MyInt3 = MyInt++;
CThreadCPPType<int> MyInt4 = ++MyInt;
MyInt3 = MyInt--;
MyInt4 = --MyInt;
MyInt = MyInt & 0xFFFF;
MyInt &= 0xFFF;
MyInt = MyInt | 0xFFFF;
MyInt |= 0xFFFFFFFF;
MyInt = MyInt ^ 0xFFFF;
MyInt ^= 0xF;
MyInt = -MyInt;
MyInt = !MyInt;
MyInt = MyInt % 100;
MyInt %= 2;
MyInt = MyInt >> 10;
MyInt = MyInt << 10;
MyInt >>= 2;
MyInt <<= 2;
MyInt = ~MyInt;
bool b1 = (MyInt == MyInt);
bool b2 = (MyInt != MyInt);
bool b3 = (MyInt > MyInt);
bool b4 = (MyInt < MyInt);
bool b5 = (MyInt <= MyInt);
bool b6 = (MyInt >= MyInt);
bool b7 = MyInt;
int n = MyInt;
int* p = &MyInt;
MyInt = +MyInt;
MyInt = MyInt + 100 / MyInt & MyInt + !MyInt;
MyInt += MyInt += MyInt += MyInt;
MyInt = MyInt + MyInt - MyInt * MyInt / MyInt % MyInt
& MyInt << MyInt >> MyInt ^ MyInt | MyInt
%= MyInt &= MyInt *= MyInt += MyInt -= MyInt
/= MyInt <<= MyInt >>= MyInt ^= MyInt |= MyInt;
MyInt2 = 100;
MyInt2 = MyInt2 + 100;
MyInt2 = MyInt2 - 100;
MyInt2 = MyInt2 * 2;
MyInt2 = MyInt2 / 2;
MyInt2 -= 100;
MyInt2 += 100;
MyInt2 *= 100;
MyInt2 /= 100;
MyInt3 = MyInt2++;
MyInt4 = ++MyInt2;
MyInt3 = MyInt2--;
MyInt4 = --MyInt2;
MyInt2 = MyInt2 & 0xFFFF;
MyInt2 &= 0xFFF;
MyInt2 = MyInt2 | 0xFFFF;
MyInt2 |= 0xFFFFFFFF;
MyInt2 = MyInt2 ^ 0xFFFF;
MyInt2 ^= 0xF;
MyInt2 = -MyInt2;
MyInt2 = !MyInt2;
MyInt2 = MyInt2 % 100;
MyInt2 %= 2;
MyInt2 = MyInt2 >> 10;
MyInt2 = MyInt2 << 10;
MyInt2 >>= 2;
MyInt2 <<= 2;
MyInt2 = ~MyInt2;
b1 = (MyInt2 == MyInt2);
b2 = (MyInt2 != MyInt2);
b3 = (MyInt2 > MyInt2);
b4 = (MyInt2 < MyInt2);
b5 = (MyInt2 <= MyInt2);
b6 = (MyInt2 >= MyInt2);
b7 = MyInt2;
n = MyInt2;
p = &MyInt2;
MyInt2 = +MyInt2;
MyInt2 = MyInt2 + MyInt2 - MyInt2 * MyInt2 / MyInt2 % MyInt2
& MyInt2 << MyInt2 >> MyInt2 ^ MyInt2 | MyInt2 %=
MyInt2 &= MyInt2 *= MyInt2 += MyInt2 -= MyInt2 /= MyInt2
<<= MyInt2 >>= MyInt2 ^= MyInt2 |= MyInt2;
CThreadCPPType<int> MyInt5 = MyInt2;
MyInt5 = MyInt2;
{
std::ofstream MyOut("C:\\test.txt");
MyOut << MyInt << MyInt2;
}
{
std::ifstream MyIn("C:\\test.txt");
MyIn >> MyInt >> MyInt2;
}

Memmap can also be a trouble, the way it handles integers.

Btw, I also typedef'd standard typedefs such as uint64_t to the CPPType class, so MemMap now uses the CPPType class.

Code:

// 7.18.1.1 Exact-width integer types
typedef CCPPType<__int8> int8_t;
typedef CCPPType<__int16> int16_t;
typedef CCPPType<__int32> int32_t;
typedef CCPPType<__int64> int64_t;
typedef CCPPType<unsigned __int8> uint8_t;
typedef CCPPType<unsigned __int16> uint16_t;
typedef CCPPType<unsigned __int32> uint32_t;
typedef CCPPType<unsigned __int64> uint64_t;
typedef CThreadCPPType<__int8> tint8_t;
typedef CThreadCPPType<__int16> tint16_t;
typedef CThreadCPPType<__int32> tint32_t;
typedef CThreadCPPType<__int64> tint64_t;
typedef CThreadCPPType<unsigned __int8> tuint8_t;
typedef CThreadCPPType<unsigned __int16> tuint16_t;
typedef CThreadCPPType<unsigned __int32> tuint32_t;
typedef CThreadCPPType<unsigned __int64> tuint64_t;