Компиляторы C / C ++ по умолчанию используют соглашение о вызовах C (сначала помещает самый правый параметр в стек), поскольку оно позволяет работать с функциями с переменным номером аргумента как printf.
Соглашение о вызовах Паскаля (он же "fastcall") выдвигает самый левый параметр первым. Это быстрее, хотя и стоит вам возможности простых функций с переменными аргументами (я где-то читал, что они все еще возможны, хотя вам нужно использовать некоторые приемы).
Из-за скорости, достигнутой в результате использования соглашения Pascal, оба API-интерфейса Win32 и MacOS по умолчанию используют это соглашение о вызовах, за исключением некоторых случаев.
Если у этой функции есть только один параметр, то теоретически использование любого соглашения о вызовах было бы законным, хотя компилятор может применять то же соглашение о вызовах, которое используется, чтобы избежать любой проблемы.
Библиотеки boost были разработаны с учетом переносимости, поэтому они должны не зависеть от того, какое соглашение о вызовах использует конкретный компилятор.