47#define DEFINE_ENUM_VECTOR( enumName, ... ) \ 
   48    enum enumName __VA_ARGS__; \ 
   49    static constexpr enumName enumName##_vector[] = __VA_ARGS__; 
 
   51#define DECLARE_ENUM_VECTOR( className, enumName ) \ 
   52    constexpr className::enumName className::enumName##_vector[]; 
 
   69#define DEFINE_ENUM_CLASS_WITH_ITERATOR( enumName, beginVal, ... ) \ 
   70    enum class enumName : int { beginVal, __VA_ARGS__, _ENUM_END }; \ 
   71    typedef ENUM_ITERATOR<enumName, enumName::beginVal, enumName::_ENUM_END> enumName##_ITERATOR; 
 
   73template <
typename T, T beginVal, T endVal>
 
   76    typedef typename std::underlying_type<T>::type 
val_t;
 
 
ENUM_ITERATOR operator++()
 
std::underlying_type< T >::type val_t
 
std::ptrdiff_t difference_type
 
ENUM_ITERATOR(const T &f)
 
bool operator==(const ENUM_ITERATOR &aIt) const
 
bool operator!=(const ENUM_ITERATOR &aIt) const
 
std::input_iterator_tag iterator_category