#include <iostream>
#include <tuple>
template<typename ...Ts>
bool is_equal(const std::tuple<Ts...>& lhs, const std::tuple<Ts...>& rhs)
{
return lhs == rhs;
}
template<typename ...Ts, typename... Us>
bool is_equal(const std::tuple<Ts...>&, const std::tuple<Us...>&)
{
return false;
}
int main() {
std::tuple<int, int> t1(1, 2);
std::tuple<int> t2(1);
std::cout << is_equal(t1, t2) << std::endl;
std::cout << is_equal(t1, std::make_tuple(1, 2)) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHVwbGU+CgoKdGVtcGxhdGU8dHlwZW5hbWUgLi4uVHM+CmJvb2wgaXNfZXF1YWwoY29uc3Qgc3RkOjp0dXBsZTxUcy4uLj4mIGxocywgY29uc3Qgc3RkOjp0dXBsZTxUcy4uLj4mIHJocykKewoJcmV0dXJuIGxocyA9PSByaHM7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIC4uLlRzLCB0eXBlbmFtZS4uLiBVcz4KYm9vbCBpc19lcXVhbChjb25zdCBzdGQ6OnR1cGxlPFRzLi4uPiYsIGNvbnN0IHN0ZDo6dHVwbGU8VXMuLi4+JikKewoJcmV0dXJuIGZhbHNlOwp9CgoKCmludCBtYWluKCkgewogICAgc3RkOjp0dXBsZTxpbnQsIGludD4gdDEoMSwgMik7CiAgICBzdGQ6OnR1cGxlPGludD4gdDIoMSk7CiAgICAKICAgIHN0ZDo6Y291dCA8PCBpc19lcXVhbCh0MSwgdDIpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBpc19lcXVhbCh0MSwgc3RkOjptYWtlX3R1cGxlKDEsIDIpKSA8PCBzdGQ6OmVuZGw7Cn0=