#include <iostream>
using namespace std;
//от сюда
template <bool a> int reversed_binary_value() {
return a;
}
template <bool a, bool b, bool... d> int reversed_binary_value() {
return (reversed_binary_value<b, d...>() << 1) + a;
}
//до сюда
template <int n, bool...digits>
struct CheckValues {
static void check(int x, int y)
{
CheckValues<n-1, 0, digits...>::check(x, y);
CheckValues<n-1, 1, digits...>::check(x, y);
}
};
template <bool...digits>
struct CheckValues<0, digits...> {
static void check(int x, int y)
{
int z = reversed_binary_value<digits...>();
std::cout << (z+64*y==x);
}
};
int main()
{
int t; std::cin >> t;
for (int i=0; i!=t; ++i) {
int x, y;
cin >> x >> y;
CheckValues<6>::check(x, y);
cout << "\n";
}
}
Объясните мне как работает этот..."variadic" в плане пакетный параметр в шаблоне вида "bool...d". Я не понимаю как работает это, а точнее то что выделено комментариями. Если остальное более менее я могу разобрать то в этом вообще без идей. Или направьте меня где есть более точный ответ, т.к в поиске этого всего касаются лишь по касательной