Как автоматически вывести параметр шаблона для параметра функции типа basic_string_view или подобного?
Следующее не работает:
template<class charT, class traits = std::char_traits<charT> >
void f(std::basic_string_view<charT, traits> sv) {
}
int main(){
std::basic_string_view sv = "no";//ok
std::basic_string_view svw = L"shit";//ok
f("sherlock");//not ok
}
Я хочу использовать руководство по дедукции (неявное или иное) basic_string_view
в функции f
. Как такое возможно?
1 ответ
Это невозможно напрямую в сочетании с выводом аргумента функции. Однако это возможно, просто переадресовав вместо этого:
template<class T>
void f(T&& str) {
std::basic_string_view sv = str;//using deduction guide here
using CharT = decltype(sv)::value_type;
}
Так что внутри функции нет проблем.