Как вызвать функцию со ссылкой на массив неизвестного размера?

Рассмотрим действительный код:

template
void by_numbered_reference(int (&array)[size]);

Эта функция принимает массив в качестве аргумента, и компилятор может определить его размер с помощью вывода аргумента шаблона.

Теперь допустимо (протестировано на Apple clang версии 3.0) определить такую функцию:

void by_reference(int (&array)[], int size);

Который (должен) принять ссылку на массив неизвестного размера в качестве аргумента. Отмечая чтоint[] а такжеint[n] являются различными типами и, как правило, несовместимы.

Единственный способ, который я нашел, как вызвать эту функцию:

int * array;
by_reference(reinterpret_cast(*array), array_size);
Почему язык принимает ссылку на массив неизвестного размера в качестве допустимого аргумента функции, в то время как нет простого способа определить такую переменную?Известны ли случаи использования этого синтаксиса?Зачемvoid by_reference(int (*&array), int size) долженне использовать вместо этого?