Это продолжение этого вопроса. Код в вопросе ОП показался мне вполне разумным и недвусмысленным. Почему С++ не позволяет использовать прежние параметры для определения значений по умолчанию для последних параметров, например:
int foo( int a, int b = a );
Кроме того, по крайней мере, в С++ 11 объявленные типы параметров могут использоваться для определения типа возвращаемого значения, поэтому нередко можно использовать параметры функции аналогичным образом:
auto bar( int a ) -> decltype( a );
Таким образом, вопрос: каковы причины, по которым вышеуказанное объявление foo
не разрешено?
__cdecl
и__stdcall
) определить порядок передачи аргументов справа налево. Если вы отлаживаете код с некоторыми нетривиальными (содержащими пользовательские конструкторы) параметрами в качестве аргументов функции и переходите к такому вызову, вы заметите, что конструкторы действительно вызываются в обратном порядке. - person Mateusz Grzejek   schedule 30.07.2015