#include <iostream>
#include <type_traits>
#include <typeinfo>
struct Node {};
template <typename T>
inline void Acquire_Store(T *ptr, typename std::remove_const<T>::type value)
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
std::cout << typeid(ptr).name() << std::endl;
}
int main()
{
const Node *node = NULL;
Acquire_Store(&node, static_cast<Node *> (NULL));
const int a = 42;
Acquire_Store (&a, 0);
const int *b = &a;
Acquire_Store (&b, static_cast<int *> (NULL) );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CiNpbmNsdWRlIDx0eXBlaW5mbz4KCnN0cnVjdCBOb2RlIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSB2b2lkIEFjcXVpcmVfU3RvcmUoVCAqcHRyLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB2YWx1ZSkKewogIHN0ZDo6Y291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IHN0ZDo6ZW5kbDsKICBzdGQ6OmNvdXQgPDwgdHlwZWlkKHB0cikubmFtZSgpIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKQp7CiAgY29uc3QgTm9kZSAqbm9kZSA9IE5VTEw7CiAgQWNxdWlyZV9TdG9yZSgmbm9kZSwgc3RhdGljX2Nhc3Q8Tm9kZSAqPiAoTlVMTCkpOwogIGNvbnN0IGludCBhID0gNDI7CiAgQWNxdWlyZV9TdG9yZSAoJmEsIDApOwogIGNvbnN0IGludCAqYiA9ICZhOwogIEFjcXVpcmVfU3RvcmUgKCZiLCBzdGF0aWNfY2FzdDxpbnQgKj4gKE5VTEwpICk7Cn0=