C++ で配列の要素数を求めるテンプレート作りたいのですが、

template <class T, int N>
int length(const T (&x)[N]) {
  return N;
}


const BYTE* ptr = &values[0];
inr length = length(ptr);

とすると
error C2784: 'int length(const T (&)[N])' :テンプレート 引数を 'const T (&)[N]' に対して 'const BYTE *' から減少できませんでした

とエラーが出てしまいます。
どうすればいいのでしょうか?