Как указывалось в вопросе Quora, с которым вы связались, первые две опции используют указатели на функции, а последняя опция использует ссылку на функцию.
См. этот вопрос о переполнении стека для общего обсуждения того, лучше ли передавать параметр по указателю или по ссылке.
Обычно ссылки проще и безопаснее, но указатели более мощные, так как указатели могут быть переназначены, и вы также можете сделать указательарифметика. Это также относится к указателям и ссылкам на функции.
Поскольку вы заявили, что хотите сохранить простоту, я бы порекомендовал использовать ссылки, то есть параметр в третьей строке. Таким образом, компилятор не позволит вам делать потенциально опасные вещи со ссылкой. Я не вижу преимуществ в использовании указателей в вашем случае, так как у вас нет оснований переназначать указатель или выполнять арифметику указателей.
Однако, это также вопрос личных предпочтений, используете ли вы указатели или ссылки. Поскольку я больше программист на C, чем на C ++, я лично предпочитаю указатели на ссылки.
Независимо от того, используете ли вы ссылки или указатели, компилятор будет генерировать один и тот же машинный код (который использует указатели). Ссылки - это просто абстракция указателей, которая существует только в вашем исходном коде. Позже они будут преобразованы в указатели, когда компилятор создаст исполняемый файл.