#include <iostream>
#include <tuple>
template<class T> struct Convert;
template<> struct Convert<int> {typedef bool Type;};
template<> struct Convert<char> {typedef int Type;};
template<> struct Convert<bool> {typedef char Type;};
template <typename... Args>
struct convert;
template <typename... Args>
struct convert<std::tuple<Args...>>
{
typedef std::tuple<typename Convert<Args>::Type...> type;
};
int main()
{
static_assert(
std::is_same<
convert<std::tuple<int, char, bool>>::type,
std::tuple<bool, int, char>
>::value, ""
);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHVwbGU+Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgQ29udmVydDsKdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydDxpbnQ+ICB7dHlwZWRlZiBib29sIFR5cGU7fTsKdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydDxjaGFyPiB7dHlwZWRlZiBpbnQgVHlwZTt9Owp0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0PGJvb2w+IHt0eXBlZGVmIGNoYXIgVHlwZTt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CnN0cnVjdCBjb252ZXJ0OwoKdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CnN0cnVjdCBjb252ZXJ0PHN0ZDo6dHVwbGU8QXJncy4uLj4+CnsKICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBlbmFtZSBDb252ZXJ0PEFyZ3M+OjpUeXBlLi4uPiB0eXBlOwp9OwoKaW50IG1haW4oKQp7CiAgICBzdGF0aWNfYXNzZXJ0KAogICAgICAgIHN0ZDo6aXNfc2FtZTwKICAgICAgICAgICAgY29udmVydDxzdGQ6OnR1cGxlPGludCwgY2hhciwgYm9vbD4+Ojp0eXBlLAogICAgICAgICAgICBzdGQ6OnR1cGxlPGJvb2wsIGludCwgY2hhcj4KICAgICAgICA+Ojp2YWx1ZSwgIiIKICAgICk7Cn0=