Непонятная деталь о самом неприятном синтаксическом анализе

Мой вопрос заключается в том, как следующую строку можно проанализировать как объявление функции:

vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());

Я понимаю большинство деталей самого неприятного синтаксического анализа и почему второй временный итератор может быть интерпретирован как тип, который является функцией, возвращающей итератор и не принимающей аргументов, но я не понимаю, почему первый временный итератор можно интерпретировать как тип. Какой тип он представляет? Я думаю, что это будет какой-то тип функции, но я не могу понять, как используется имя cin . Он объявляет, что параметр является istream_iterator с именем cin ? Если да, то означает ли это, что вы можете произвольно заключать в скобки имена аргументов функций? И если да, то почему?

15
задан GEOCHET 10 August 2015 в 15:56
поделиться