SFINAE関係ねぇ〜

C++テンプレートテクニック を少しずつ読んでいるがおかしな記述発見。
Chapter5 p109より

配列をbegin()に渡した場合、テンプレートのインスタンス化によってbegin()の戻り値の型であるtypename Containter;;iteratorへの置き換えに失敗します。このとき、コンテナ版begin()がオーバーロードの対象外となり、配列版のbegin()が呼び出されることになるのです。

これはいったい何のことだろう?
こんなことを書くと、以下のように戻り値の型をSFINAEが働かない形にすると、オーバーロードできなくなると誤解する人がでないだろうか。

template <class C>
void hoge(C& c)
{
  // ...
}
template <class T, atd::size_t N>
void hoge(T (&a)[N])
{
  // ...
}

そんなコンパイラ見たことねぇよ。