How can a template function 'know' the size of the array given as template argument?
In the C++ code below, the templated Check function gives an output that is not what I would like: it's 1 instead of 3. I suspect that K is mapped to int* , not to int[3] (is that a type?). I would like it to give me the same output than the second (non templated) function, to which I explicitly give the size of the array... Short of using macros, is there a way to write a Check function that accepts a single argument but still knows the size of the array? #include <iostream> using namespace std; int data[] = {1,2,3}; template <class K> void Check(K data) { cout << "Deduced size: " << sizeof