Function Templates Self-Check

Resolving function templates


template <typename T> T Foo(T*, int); // A
template <typename T> T Foo(T, T);    // B
template <> char Foo(char *, int);    // C
double Foo(double, double);           // D

int main(void)
{
  int i;
  unsigned int ui;
  char str[20];
  int ia[20];

  Foo(str, 20);  // 1
  Foo(ia, 20);   // 2
  Foo(ia[0], i); // 3
  Foo(i, ui);    // 4
  Foo(ia, ui);   // 5
  Foo(&i, i);    // 6
  return 0;
}