Gistrec icon

Tparam count

Gistrec | PRO | 04/11/20 03:23:56 PM UTC | 0 ⭐ | 844 👁️ | Never ⏰ | []
C++ |

910 B

|

None

|

0 👍

/

0 👎

#include <iostream>
 
#define CREATE_SAME_4X1(x) x,x,x,x
#define CREATE_SAME_4X2(x) CREATE_SAME_4X1(x),CREATE_SAME_4X1(x),CREATE_SAME_4X1(x),CREATE_SAME_4X1(x)
#define CREATE_SAME_4X3(x) CREATE_SAME_4X2(x),CREATE_SAME_4X2(x),CREATE_SAME_4X2(x),CREATE_SAME_4X2(x)
#define CREATE_SAME_4X4(x) CREATE_SAME_4X3(x),CREATE_SAME_4X3(x),CREATE_SAME_4X3(x),CREATE_SAME_4X3(x)
#define CREATE_SAME_4X5(x) CREATE_SAME_4X4(x),CREATE_SAME_4X4(x),CREATE_SAME_4X4(x),CREATE_SAME_4X4(x)
 
template<typename... Args> struct Counter;
 
template <>
struct Counter<> {
    static const size_t count = 0;
};
 
template <typename T, typename... Args>
struct Counter<T, Args...> {
    #pragma message "Instantiation"
 
    static const size_t count = 1 + Counter<Args...>::count;
};
 
int main() {
    const size_t count = Counter<CREATE_SAME_4X5( float )>::count;
 
    std::cout << "Params count: " << count << std::endl;
 
    return 0;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎