我想使用C++17中引入的文字运算符来创建字符串视图。但如果我写:
#include <string_view>
// ...
auto name = "John Smith"sv;
在我的代码中,编译失败; clang++ 说:
error: no matching literal operator for call to 'operator""sv' with arguments of types
'const char *' and 'unsigned long', and no matching literal operator template
g++ 说:
error: unable to find string literal operator 'operator""sv' with 'const char [4]', 'long
unsigned int' arguments
为什么他们不接受
sv
字面意思?
默认情况下,
sv
文字不在全局命名空间中;你必须先写:
using std::string_view_literals;
(或
std::literals
,或std::literals::string_view_literals
),然后你的代码将工作(GodBolt)。