gpt4 book ai didi

c++ - 如何在命名空间中引用用户定义的文字运算符?

转载 作者:可可西里 更新时间:2023-11-01 15:05:16 25 4
gpt4 key购买 nike

考虑以下几点:

#include <iostream>

namespace X
{
void operator ""_test(unsigned long long x)
{
std::cout << x;
}
}

int main()
{
using namespace X;
10_test;
// 10_X::test; /* doesn't work */
}

我可以引用user defined literal operator通过显式 using namespace X;namespace X 内。有什么方法可以在不显式包含 namespace 的情况下引用文字运算符吗?我试过了

10_X::test;

但当然不起作用,因为解析器认为 X 指的是运算符的名称。

X::operator ""_test(10)

可以,但很笨拙。

最佳答案

#include <iostream>

namespace X {
inline namespace literals {
void operator ""_test(unsigned long long x) {
std::cout << x;
}
}
}

int main() {
{
using namespace X::literals;
10_test;
}
{
using X::operator""_test;
10_test;
}
}

_testXX::literals 中。这允许人们 using namespace X::literals; 而无需从 X 中提取所有内容,但在 X _test 中也可用。

导入单个文字有点烦人。

std 使用 std::chronostd::literals 以及 std::chrono::literals内联命名空间让您可以定义命名空间的子部分,您认为人们希望将这些子部分作为一个 block 导入而不获取其余部分。

关于c++ - 如何在命名空间中引用用户定义的文字运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49054477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com