#include <iostream>
#include <memory>
#include <typeinfo>
using namespace std;
// For demo only
#include <cxxabi.h>
int main( )
{
auto ptr1 = make_unique< char > ( 12 ) ;
auto ptr2 = make_unique< char [ ] > ( 12 ) ;
std:: size_t len = 0 ;
int status = 0 ;
auto type_name1 = typeid ( ptr1) .name ( ) ;
auto type_name2 = typeid ( ptr2) .name ( ) ;
cout << "ptr1 type is "
<< type_name1
<< ", aka: "
<< __cxxabiv1:: __cxa_demangle( type_name1, nullptr, & len, & status)
<< endl;
cout << "ptr2 type is "
<< type_name2
<< ", aka: "
<< __cxxabiv1:: __cxa_demangle( type_name2, nullptr, & len, & status)
<< endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8dHlwZWluZm8+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRm9yIGRlbW8gb25seQojaW5jbHVkZSA8Y3h4YWJpLmg+CgppbnQgbWFpbigpIAp7CglhdXRvIHB0cjEgPSBtYWtlX3VuaXF1ZTxjaGFyPigxMik7CglhdXRvIHB0cjIgPSBtYWtlX3VuaXF1ZTxjaGFyW10+KDEyKTsKCglzdGQ6OnNpemVfdCBsZW4gPSAwIDsKICAgICAgICBpbnQgc3RhdHVzID0gMCA7CgkKCWF1dG8gdHlwZV9uYW1lMSA9IHR5cGVpZChwdHIxKS5uYW1lKCk7CglhdXRvIHR5cGVfbmFtZTIgPSB0eXBlaWQocHRyMikubmFtZSgpOwoKCWNvdXQgPDwgInB0cjEgdHlwZSBpcyAiIAoJICAgICA8PCB0eXBlX25hbWUxCgkgICAgIDw8ICIsIGFrYTogIgoJICAgICA8PCBfX2N4eGFiaXYxOjpfX2N4YV9kZW1hbmdsZSh0eXBlX25hbWUxLCBudWxscHRyLCAmbGVuLCAmc3RhdHVzKQoJICAgICA8PCBlbmRsOwoJCgljb3V0IDw8ICJwdHIyIHR5cGUgaXMgIiAKCSAgICAgPDwgdHlwZV9uYW1lMgoJICAgICA8PCAiLCBha2E6ICIKCSAgICAgPDwgX19jeHhhYml2MTo6X19jeGFfZGVtYW5nbGUodHlwZV9uYW1lMiwgbnVsbHB0ciwgJmxlbiwgJnN0YXR1cykKCSAgICAgPDwgZW5kbDsKCglyZXR1cm4gMDsKfQo=