vso*_*tco 11 c++ user-defined-literals c++11
考虑以下:
#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 */
}
Run Code Online (Sandbox Code Playgroud)
我指的是用户定义的字面运营商内部的namespace X一个显式using namespace X;.有没有明确包含命名空间的方式引用文字运算符?我试过了
10_X::test;
Run Code Online (Sandbox Code Playgroud)
但当然不起作用,因为解析器认为X是指操作符的名称.
X::operator ""_test(10)
Run Code Online (Sandbox Code Playgroud)
工作,但它很笨拙.
Yak*_*ont 17
#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;
}
}
Run Code Online (Sandbox Code Playgroud)
_test既是在X和X::literals.这允许人们在using namespace X::literals;没有拉入所有东西的情况下X,但X _test也可以在其中.
导入单个文字有点烦人.
std这是否符合双方std::chrono和std::literals和std::chrono::literals. inline namespaces允许您定义命名空间的子部分,您认为人们希望将其作为块导入而不会获取其余的部分.