Мне кажется, что свободная функция предпочтительнее
Меньше символов — и писать, и читать проще
В случае шаблона класса, свободная функция может обладать дополнительным преимуществом, когда можно вывести шаблонные параметры из аргументов функции. Даже если во всей кодовой базе в основном используются обычные классы и есть единственный шаблон класса — ради консистентности я бы взял свободную функцию
Плюс, в std::
используются именно свободные функции, и в отсутствие серьёзных контраргументов, не вижу смысла делать иначе, чем в стандартной библиотеке, так пользователи получат знакомый интерфейс