Простенький компайл-тайм счетчик
От: rg45 СССР  
Дата: 28.03.17 22:08
Оценка: 112 (8)
Между делом придумался вот компайл-тайм счетчик. При всей простоте допускает одновременное использование нескольких независимых счетчиков. Также позволяет настраивать точку отчсета и шаг.

http://ideone.com/gmtlyE

template <int ORIGIN = 0, int INCREMENT = 1>
struct CTCOrigin : std::integral_constant<int, ORIGIN>
{
   static constexpr int increment = INCREMENT;
};

#define CREATE_CTC(name, ...) \
   template <size_t N> struct name : name<N - 1> { }; \
   template <> struct name<__LINE__> : CTCOrigin<__VA_ARGS__> { };

#define UPDATE_CTC(name) \
   template <> struct name<__LINE__> : name<__LINE__ - 1> \
   { \
      static constexpr int value = name<__LINE__ - 1>::value + increment; \
   };

#define GET_CTC(name) \
   name<__LINE__>::value
--
Не можешь достичь желаемого — пожелай достигнутого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.