Advertisement
Gistrec

Tparam count

Apr 11th, 2020
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #define CREATE_SAME_4X1(x) x,x,x,x
  4. #define CREATE_SAME_4X2(x) CREATE_SAME_4X1(x),CREATE_SAME_4X1(x),CREATE_SAME_4X1(x),CREATE_SAME_4X1(x)
  5. #define CREATE_SAME_4X3(x) CREATE_SAME_4X2(x),CREATE_SAME_4X2(x),CREATE_SAME_4X2(x),CREATE_SAME_4X2(x)
  6. #define CREATE_SAME_4X4(x) CREATE_SAME_4X3(x),CREATE_SAME_4X3(x),CREATE_SAME_4X3(x),CREATE_SAME_4X3(x)
  7. #define CREATE_SAME_4X5(x) CREATE_SAME_4X4(x),CREATE_SAME_4X4(x),CREATE_SAME_4X4(x),CREATE_SAME_4X4(x)
  8.  
  9. template<typename... Args> struct Counter;
  10.  
  11. template <>
  12. struct Counter<> {
  13.     static const size_t count = 0;
  14. };
  15.  
  16. template <typename T, typename... Args>
  17. struct Counter<T, Args...> {
  18.     #pragma message "Instantiation"
  19.  
  20.     static const size_t count = 1 + Counter<Args...>::count;
  21. };
  22.  
  23. int main() {
  24.     const size_t count = Counter<CREATE_SAME_4X5( float )>::count;
  25.  
  26.     std::cout << "Params count: " << count << std::endl;
  27.  
  28.     return 0;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement