Предположим, у меня есть объект только с std::string_view
конструктором:
struct OnlyStringViewCtor {
std::string str_;
OnlyStringViewCtor(std::string_view str) : str_(str) {}
};
и есть функция, которая принимает const OnlyStringViewCtor&
в качестве параметра:
void f(const OnlyStringViewCtor&) {}
когда я вызываю f("hello")
напрямую, возникает ошибка компилятора:
error: invalid initialization of reference of type 'const OnlyStringViewCtor&' from expression of type 'const char [6]'
Есть ли какой-нибудь хороший способ, позволяющий f("hello")
работать нормально и не объявлять другой конструктор, такой как OnlyStringViewCtor(const char*)
?
f("hello"sv)
вам подходит? - person Dmitry Kuzminov   schedule 08.10.2020f
, которая принимает string_view. или позвонитьf(MyClass{"test"})
... может дажеf({"test"})
? - person Patrick Parker   schedule 08.10.2020sv
. - person 康桓瑋   schedule 08.10.2020f({"test"})
- хороший способ, никогда об этом не задумывался. - person 康桓瑋   schedule 08.10.2020