#include <iostream>
#include <type_traits>
using namespace std;
template<class T> using ptr = T*;
template<class T>
void foo(ptr<T> p) { cout << __PRETTY_FUNCTION__ << endl; }
template<class T,
enable_if_t< sizeof(T)==1, int > V = 0>
using somechar = T;
template<class T> void bar(somechar<T> t) { cout << __PRETTY_FUNCTION__ << endl; }
int main() {
int x = 1;
foo(&x);
// foo(x); // will not compile
bar('a');
bar((unsigned char)1);
// bar(1); // no matching function
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTxjbGFzcyBUPiB1c2luZyBwdHIgPSBUKjsKCnRlbXBsYXRlPGNsYXNzIFQ+IAp2b2lkIGZvbyhwdHI8VD4gcCkgeyBjb3V0IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgZW5kbDsgfQoKdGVtcGxhdGU8Y2xhc3MgVCwKICAgICAgICAgZW5hYmxlX2lmX3Q8IHNpemVvZihUKT09MSwgaW50ID4gViA9IDA+CnVzaW5nIHNvbWVjaGFyID0gVDsKCnRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgYmFyKHNvbWVjaGFyPFQ+IHQpIHsgY291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IGVuZGw7IH0KCmludCBtYWluKCkgewogICAgaW50IHggPSAxOwogICAgZm9vKCZ4KTsKLy8gIGZvbyh4KTsgIC8vIHdpbGwgbm90IGNvbXBpbGUKICAgIGJhcignYScpOwogICAgYmFyKCh1bnNpZ25lZCBjaGFyKTEpOwovLyAgYmFyKDEpOyAgLy8gbm8gbWF0Y2hpbmcgZnVuY3Rpb24KfQ==