#include <iostream>

class uint32 {
private:
    int _value;
public:
    uint32(int i): _value(i) {}

    friend const uint32 operator < (const uint32& left, const int& right) {
        return right > static_cast<const int>(left);
    }

    friend const uint32 operator > (const uint32& left, const int& right) {
        return right < static_cast<const int>(left);
    }

    friend const bool operator || (const uint32& left, const uint32& right) {
        return static_cast<const bool>(left) && static_cast<const bool>(right);
    }

    friend const uint32& operator++(uint32& i) {
        i._value++;
        return i;
    }

    operator int() const {
        return _value;
    }

    operator bool() const {
        return _value != 0;
    }

};

#define PERM_ENCHANTMENT_SLOT 0
#define MAX_ENCHANTMENT_SLOT 15
#define PRISMATIC_ENCHANTMENT_SLOT 6
#define PROP_ENCHANTMENT_SLOT_0 10

bool IsBoundByEnchant() {
    for (uint32 enchant_slot = PERM_ENCHANTMENT_SLOT; enchant_slot < MAX_ENCHANTMENT_SLOT; ++enchant_slot) {
        if (enchant_slot > PRISMATIC_ENCHANTMENT_SLOT || enchant_slot < PROP_ENCHANTMENT_SLOT_0)    // not holding enchantment id
            continue;

        std::cout << "We are here! enchant_slot = " << (int)enchant_slot << std::endl;

    }

    return false;
}

int main() {
    (void)IsBoundByEnchant();
    return 0;
}
