В вашем случае нет ничего особенного.
Вы создаете функтор, который принимает ссылку на переменную. Хорошо. После этого вы вызываете ваш функтор со ссылкой на содержимое этой переменной. Почему бы нет? И после этого вы модифицируете его. Также хорошо.
Вы не уничтожаете ничего, на что указывают ваши ссылки, и порядок всех операций четко определен.
Таким образом, ответ таков: Да, это безопасно!
То, что вы не можете сделать, это использовать ссылку на содержимое var после того, как вы измените сам var. Это сделает вашу ссылку недействительной. Но вы больше не используете его, поэтому код четко определен.
Например, в вашем коде:
void operator()(const std::string & s) {
var = atoi(s.c_str());
## don't use "s" anymore, as s is invalidated by assigning a new value to var! ##
}