template<typename T>
void foo(T a) // 배열을 받을 순 없다.
{
}
template<typename T>
void goo(T& a) // 결론은 참조로 받으면 배열을 받을 수 있다.
{
}
int main()
{
int x[3] = {1,2,3};
int y[3] = x; // error
int* p = x; // ok
int(&r)[3] = x; // ok
foo(x);
// T : int[3] - error
// T : int* - okay
goo(x);
// T : int[3] - okay
}
// 주의사항
template<typename T> void foo(T a, T b)
{
}
template<typename T> void goo(T& a, T& b)
{
}
int main()
{
foo("orange", "apple"); // okay
goo("orange", "apple"); // error
// orange와 apple은 배열의 크기가 다른 배열이기에 같은 T로 초기화 불가능하다
}