J
JKop
First attempt:
class Blah : public int
{
};
So I began working on the next best thing:
class Blah : public IntrinsicClone<int>
{
};
And here she is:
template<class T> class IntrinsicClone
{
private:
T data;
public:
IntrinsicClone() {}
template<class R> IntrinsicClone(const R r) : data(r) { }
template<class R> T& operator=(const R r) { return data = r; }
template<class R> T& operator+=(const R r) { return data += r; }
template<class R> T& operator-=(const R r) { return data -= r; }
template<class R> T& operator*=(const R r) { return data *= r; }
template<class R> T& operator/=(const R r) { return data /= r; }
template<class R> T& operator%=(const R r) { return data %= r; }
template<class R> T& operator^=(const R r) { return data ^= r; }
template<class R> T& operator&=(const R r) { return data &= r; }
template<class R> T& operator|=(const R r) { return data |= r; }
template<class R> T& operator<<=(const R r) { return data <<= r; }
template<class R> T& operator>>=(const R r) { return data >>= r; }
template<class R> T& operator<=(const R r) { return data <= r; }
template<class R> T& operator>=(const R r) { return data >= r; }
T& operator++() { return ++data; }
T operator++(int) { return data++; }
T& operator--() { return --data; }
T operator--(int) { return data--; }
//And last but not least!
operator T()
{
return data;
}
};
Comments, questions, suggestions.
-JKop
class Blah : public int
{
};
So I began working on the next best thing:
class Blah : public IntrinsicClone<int>
{
};
And here she is:
template<class T> class IntrinsicClone
{
private:
T data;
public:
IntrinsicClone() {}
template<class R> IntrinsicClone(const R r) : data(r) { }
template<class R> T& operator=(const R r) { return data = r; }
template<class R> T& operator+=(const R r) { return data += r; }
template<class R> T& operator-=(const R r) { return data -= r; }
template<class R> T& operator*=(const R r) { return data *= r; }
template<class R> T& operator/=(const R r) { return data /= r; }
template<class R> T& operator%=(const R r) { return data %= r; }
template<class R> T& operator^=(const R r) { return data ^= r; }
template<class R> T& operator&=(const R r) { return data &= r; }
template<class R> T& operator|=(const R r) { return data |= r; }
template<class R> T& operator<<=(const R r) { return data <<= r; }
template<class R> T& operator>>=(const R r) { return data >>= r; }
template<class R> T& operator<=(const R r) { return data <= r; }
template<class R> T& operator>=(const R r) { return data >= r; }
T& operator++() { return ++data; }
T operator++(int) { return data++; }
T& operator--() { return --data; }
T operator--(int) { return data--; }
//And last but not least!
operator T()
{
return data;
}
};
Comments, questions, suggestions.
-JKop