#include <iostream>
using namespace std;
template<size_t n>
void template_magic(char (&array)[n])
{
cout << "array size: " << n << endl;
}
int main()
{
char array[10] = {};
char* pointer = array;
template_magic(pointer);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8c2l6ZV90IG4+CnZvaWQgdGVtcGxhdGVfbWFnaWMoY2hhciAoJmFycmF5KVtuXSkKewoJY291dCA8PCAiYXJyYXkgc2l6ZTogIiA8PCBuIDw8IGVuZGw7Cn0KCmludCBtYWluKCkKewoJY2hhciBhcnJheVsxMF0gPSB7fTsKCWNoYXIqIHBvaW50ZXIgPSBhcnJheTsKCXRlbXBsYXRlX21hZ2ljKHBvaW50ZXIpOwoJcmV0dXJuIDA7Cn0=
prog.cpp: In function ‘int main()’:
prog.cpp:14:24: error: no matching function for call to ‘template_magic(char*&)’
template_magic(pointer);
^
prog.cpp:14:24: note: candidate is:
prog.cpp:5:6: note: template<unsigned int n> void template_magic(char (&)[n])
void template_magic(char (&array)[n])
^
prog.cpp:5:6: note: template argument deduction/substitution failed:
prog.cpp:14:24: note: mismatched types ‘char [n]’ and ‘char*’
template_magic(pointer);
^