Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement