В чём разница между string_viewили const string_view& в аргументах функции?
В первом случае у вас объект, который вы можете менять. Например настроить его на новую строку. При этом исходный объект останется неизменным, т.к. тут передача параметра по значению, а значит внутри функции у вас будет копия string_view.
Во втором случае у вас ссылка на константу. Поменять объект вы не можете, зато сэкономите несколько байт на стеке.
Если алгоритм не требует менять параметр функции, то предпочитайте второй вариант. Ссылку на константу можно получить от любого объекта.
string_view это не в коем случае не замена string. Не нужно его пихать везде.
string_view это не обёртка над char*. string_view может содержать символ "\0".
string_view это read-only pascal-строка.