함수의 주소를 출력하기 위해서
: 함수의 시그니처를 맞춰야 함.
동일한 이름의 함수가 2개 있을 때
-> "함수 포인터 타입으로 캐스팅" 을 하자!
예시 코드 1번.
double square(double a) {}
int square(int a) {}
int main()
{
cout << static_cast<double(*)(double)> (&square);
}
template <typename T>
void foo(T a) {}
int main()
{
cout << &foo<int> << endl;
}
// 변환 생성자 구조체
struct FLOAT
{
FLOAT(float f) {}
}
void foo(int) { cout << "int";}
void foo(float) { cout << "float";}
void foo(char) { cout << "char";}
void foo(double) { cout << "double";}
void foo(...) { cout << "...";}
void foo(FLOAT){ cout << "FLOAT"; }
template <typename T>
void foo(T) { cout << "T";}
int main()
{
foo(3.5f); //?????
}