#include <iostream>
struct functor
{
template<class T> void operator()(T value) // (*)
{
std::cout << "general";
}
template<class T> void operator()(T* value) // (**)
{
std::cout << "special";
}
};
int main() {
functor a;
char* b;
a(b);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IGZ1bmN0b3IKewogICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRvcigpKFQgdmFsdWUpICAgICAgICAgICAvLyAoKikKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgImdlbmVyYWwiOwogICAgfQogICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRvcigpKFQqIHZhbHVlKSAvLyAoKiopCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJzcGVjaWFsIjsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgZnVuY3RvciBhOwogICAgY2hhciogYjsKICAgIGEoYik7Cn0K