#include <iostream>
#include <typeinfo>
int main()
{
const int i = 42;
auto j = i;
const auto &k = i;
auto *p = &i;
const auto j2 = i, &k2 = i;
// print i means int, and PKi means pointer to const int.
std::cout << "j is " << typeid(j).name()
<< "\nk is " << typeid(k).name()
<< "\np is " << typeid(p).name()
<< "\nj2 is " << typeid(j2).name()
<< "\nk2 is " << typeid(k2).name()
<< std::endl;
++j;
++*p;
++k;
++j2;
++k2;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CgppbnQgbWFpbigpCnsKICBjb25zdCBpbnQgaSA9IDQyOwogIGF1dG8gaiA9IGk7CiAgY29uc3QgYXV0byAmayA9IGk7CiAgYXV0byAqcCA9ICZpOwogIGNvbnN0IGF1dG8gajIgPSBpLCAmazIgPSBpOwoKICAvLyBwcmludCBpIG1lYW5zIGludCwgYW5kIFBLaSBtZWFucyBwb2ludGVyIHRvIGNvbnN0IGludC4KICBzdGQ6OmNvdXQgPDwgImogaXMgIiA8PCB0eXBlaWQoaikubmFtZSgpCiAgICAgICAgICAgIDw8ICJcbmsgaXMgIiA8PCB0eXBlaWQoaykubmFtZSgpCiAgICAgICAgICAgIDw8ICJcbnAgaXMgIiA8PCB0eXBlaWQocCkubmFtZSgpCiAgICAgICAgICAgIDw8ICJcbmoyIGlzICIgPDwgdHlwZWlkKGoyKS5uYW1lKCkKICAgICAgICAgICAgPDwgIlxuazIgaXMgIiA8PCB0eXBlaWQoazIpLm5hbWUoKQogICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CiAgKytqOwogICsrKnA7CiAgKytrOwogICsrajI7CiAgKytrMjsKICByZXR1cm4gMDsKfQ==