EDIT: Теперь, когда вопрос был обновлен, я понимаю, что это не имеет никакого отношения. Однако я оставлю его здесь, если кто-то ищет подходящую проблему.
В целом с C ++, насколько безопасна эта ситуация, действительно зависит от тела рассматриваемой функции , Если вы читаете и записываете одну и ту же переменную напрямую, вы можете столкнуться с некоторыми серьезными логическими проблемами.
Однако, если вы используете временную переменную для хранения исходного значения перед ее перезаписью, это должно быть хорошо.
МАССИВНОЕ слово предупреждения, если вы работаете с массивами, Однако. Если вы пытаетесь сохранить все содержимое массива во временной переменной, вы должны быть осторожны, вы храните фактический массив, а не только указатель на него. Во многих ситуациях было бы целесообразно сохранять отдельные значения в массиве временно (например, в функции свопинга). Однако я не могу дать больше дальнейших рекомендаций в этом отношении, поскольку все зависит от того, что вы пытаетесь сделать.
Короче говоря, все зависит от реализации вашей функции.
Если вам действительно нужно включить часть другого репозитория в историю вашего собственного репо, то стратегия слияния поддеревьев более адекватна, чем подмодули.
Но в обоих случаях с вашим репозиторием связан полный репозиторий, а не только один каталог.
И частичное клонирование невозможно .
Вы можете попытаться изолировать этот каталог в его собственном репозитории, а затем добавить его как подмодуль, но это означает, что его история будет полностью отделена от репо, из которого он исходил.