为什么我在尝试使用 sv 文字时收到“没有匹配的文字运算符”?

问题描述 投票:0回答:1

我想使用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
字面意思?

c++20 linker-errors ld suppress-warnings
1个回答
0
投票

默认情况下,

sv
文字不在全局命名空间中;你必须先写:

using std::string_view_literals;

(或

std::literals
,或
std::literals::string_view_literals
),然后你的代码将工作(GodBolt)。

© www.soinside.com 2019 - 2024. All rights reserved.