#include <iostream>
#include <type_traits>
template<typename DATA_TYPE>
void Push(const typename std::remove_pointer<DATA_TYPE>::type& newValue)
{
std::cout<<"Const & version"<<std::endl;
}
template<typename DATA_TYPE>
void Push(const DATA_TYPE *newValue)
{
std::cout<<"Const * version"<<std::endl;
}
int main()
{
int i=7;
Push(i);
Push(&i);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBEQVRBX1RZUEU+ICAgCnZvaWQgUHVzaChjb25zdCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPERBVEFfVFlQRT46OnR5cGUmIG5ld1ZhbHVlKQp7CiAgICBzdGQ6OmNvdXQ8PCJDb25zdCAmIHZlcnNpb24iPDxzdGQ6OmVuZGw7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIERBVEFfVFlQRT4gCnZvaWQgUHVzaChjb25zdCBEQVRBX1RZUEUgKm5ld1ZhbHVlKQp7CiAgICBzdGQ6OmNvdXQ8PCJDb25zdCAqIHZlcnNpb24iPDxzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkKewogICAgaW50IGk9NzsKICAgIFB1c2goaSk7CiAgICBQdXNoKCZpKTsKfQ==