#include <iostream>
#include <typeinfo>
using namespace std;
template<bool NewBool, template<bool> typename ClassName, bool TheBool>
ClassName<NewBool> FT(const ClassName<TheBool>&);
template<bool X>
struct T {};
int main() {
T<true> t;
decltype(FT<false>(t)) f;
cout << typeid(t).name() << endl;
cout << typeid(f).name() << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Ym9vbCBOZXdCb29sLCB0ZW1wbGF0ZTxib29sPiB0eXBlbmFtZSBDbGFzc05hbWUsIGJvb2wgVGhlQm9vbD4KQ2xhc3NOYW1lPE5ld0Jvb2w+IEZUKGNvbnN0IENsYXNzTmFtZTxUaGVCb29sPiYpOwoKdGVtcGxhdGU8Ym9vbCBYPgpzdHJ1Y3QgVCB7fTsKCmludCBtYWluKCkgewoKCVQ8dHJ1ZT4gdDsKCWRlY2x0eXBlKEZUPGZhbHNlPih0KSkgZjsKCgljb3V0IDw8IHR5cGVpZCh0KS5uYW1lKCkgPDwgZW5kbDsKCWNvdXQgPDwgdHlwZWlkKGYpLm5hbWUoKSA8PCBlbmRsOwp9