#include <iostream>
using namespace std;
template<typename T, size_t N>
void sink(T (&)[N]) {}
int main() {
int array[] = {1,2,3};
sink(array);
sink(&array[0]);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CnZvaWQgc2luayhUICgmKVtOXSkge30KCmludCBtYWluKCkgewoJaW50IGFycmF5W10gPSB7MSwyLDN9OwoJc2luayhhcnJheSk7CglzaW5rKCZhcnJheVswXSk7CglyZXR1cm4gMDsKfQ==
prog.cpp: In function 'int main()':
prog.cpp:10:16: error: no matching function for call to 'sink(int*)'
sink(&array[0]);
^
prog.cpp:10:16: note: candidate is:
prog.cpp:5:6: note: template<class T, unsigned int N> void sink(T (&)[N])
void sink(T (&)[N]) {}
^
prog.cpp:5:6: note: template argument deduction/substitution failed:
prog.cpp:10:16: note: mismatched types 'T [N]' and 'int*'
sink(&array[0]);
^