>>284
そこはこうしようよ。
template<typename Iterator>
void array_callee(Iterator first, Iterator last)
{
  cout << distance(first, last) << endl;
  for (int i = 0; first != last; ++first, ++i)
    *first = i;
}

template<std::size_t N> inline void array_callee(int (&array)[N])
{
  array_callee(array, array + N);
}
inline void vector_callee(vector<int>& array)
{
  array_callee(array.begin(), array.end());
}