#include <iostream>
#include <typeinfo>
using namespace std;
struct mystruct{};
template<typename T>
struct map;
//partial specification
#define MAPPING(Key, Val) \
template<> \
struct map<Key> \
{ \
typedef Val mapping_type; \
};
MAPPING(mystruct, int)
template<typename T>
void func(T t)
{
typename map<T>::mapping_type i = 999;
cout<<i<<endl;
}
int main() {
// your code goes here
mystruct ms;
func(ms);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgbXlzdHJ1Y3R7fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBtYXA7CgovL3BhcnRpYWwgc3BlY2lmaWNhdGlvbgojZGVmaW5lIE1BUFBJTkcoS2V5LCBWYWwpICAgICAgIFwKdGVtcGxhdGU8PiAgICAgICAgICAgICAgICAgICAgICBcCnN0cnVjdCBtYXA8S2V5PiAgICAgICAgICAgICAgICAgXAp7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKdHlwZWRlZiBWYWwgbWFwcGluZ190eXBlOwlcCn07CgpNQVBQSU5HKG15c3RydWN0LCBpbnQpCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIGZ1bmMoVCB0KQp7Cgl0eXBlbmFtZSBtYXA8VD46Om1hcHBpbmdfdHlwZSBpID0gOTk5OwoJY291dDw8aTw8ZW5kbDsKfQoKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJbXlzdHJ1Y3QgbXM7CglmdW5jKG1zKTsKCglyZXR1cm4gMDsKfQ==