struct TypeName \
{ \
\
typedef ValueType value_type; \
TypeName() {} \
TypeName(const TypeName &other) : value(other.value) {} \
TypeName& operator=(const TypeName &other) { value = other.value; return *this; } \
explicit TypeName(ValueType value_) : value(value_) {} \
operator ValueType() const { return value; } \
ValueType&
get() {
return value; } \
const ValueType&
get()
const {
return value; } \
TypeName& operator ++() { ++value; return *this; } \
TypeName operator ++(int) { TypeName temp(*this); TypeName::operator ++(); return temp; } \
TypeName& operator --() { --value; return *this; } \
TypeName operator --(int) { TypeName temp(*this); TypeName::operator --(); return temp; } \
TypeName& operator +=(const ValueType& rhs) { value += rhs; return *this; } \
TypeName& operator -=(const ValueType& rhs) { value -= rhs; return *this; } \
TypeName& operator *=(const ValueType& rhs) { value *= rhs; return *this; } \
TypeName& operator /=(const ValueType& rhs) { value /= rhs; return *this; } \
TypeName& operator %=(const ValueType& rhs) { value %= rhs; return *this; } \
TypeName& operator &=(const ValueType& rhs) { value &= rhs; return *this; } \
TypeName& operator |=(const ValueType& rhs) { value |= rhs; return *this; } \
TypeName& operator ^=(const ValueType& rhs) { value ^= rhs; return *this; } \
TypeName& operator <<=(ValueType distance) { value <<= distance; return *this; } \
TypeName& operator >>=(ValueType distance) { value >>= distance; return *this; } \
private: \
ValueType value; \
public: \
enum enum_type \
{
T & get(array< T, MAXN > &a)
Definition array.h:719