将字符串隐式转换为 string_view

implicitly convert string to string_view

void Foo1(string_view view) {
... 
}

string str = "one two three";

Foo1("one two three"); // Implicitly convert char* to string_view

Foo1(str); 

我想知道哪个构造函数将 char* 隐式转换为 string_view,哪个构造函数将字符串隐式转换为 string_view?

我知道constructor (4) const char* to string_view 但我传递的是char*.

std::string_view有一个非explicitconverting constructorconst char*,支持从const char*std::string_view的隐式转换。

constexpr basic_string_view(const CharT* s);

当你说:

but what I passed is char*.

你实际上传递了一个string literal(即"one two three"),其类型是const char[14](包括空终止符'[=19=]'),它可能会衰减到const char*.

std::string有一个非explicit conversion operator支持从std::stringstd::string_view的隐式转换。

constexpr operator std::basic_string_view<CharT, Traits>() const noexcept;

https://en.cppreference.com/w/cpp/string/basic_string/operator_basic_string_view

连同string_view的复制构造函数(2)