#include <iostream>
void func(int * const &) {}
void func(int *) {}
template <typename T> void tfunc(const T &) {std::cout << "#1\n";}
template <typename T>void tfunc(T *) {std::cout << "#2\n";}
int main()
{
int a = 0;
//func(&a); // ambiguous
tfunc(&a); // unambiguous
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp2b2lkIGZ1bmMoaW50ICogY29uc3QgJikge30Kdm9pZCBmdW5jKGludCAqKSB7fQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgdGZ1bmMoY29uc3QgVCAmKSB7c3RkOjpjb3V0IDw8ICIjMVxuIjt9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPnZvaWQgdGZ1bmMoVCAqKSB7c3RkOjpjb3V0IDw8ICIjMlxuIjt9CgppbnQgbWFpbigpCnsKICBpbnQgYSA9IDA7CgogIC8vZnVuYygmYSk7ICAgLy8gYW1iaWd1b3VzCiAgdGZ1bmMoJmEpOyAgLy8gdW5hbWJpZ3VvdXMKCiAgcmV0dXJuIDA7Cn0=