c – 如何在命名空间中引用用户定义的文字运算符?
发布时间:2020-12-16 03:45:33 所属栏目:百科 来源:网络整理
导读:考虑以下: #include iostreamnamespace X{ void operator ""_test(unsigned long long x) { std::cout x; }}int main(){ using namespace X; 10_test; // 10_X::test; /* doesn't work */} 我可以通过显式使用命名空间X;来引用命名空间X中的user defined li
考虑以下:
#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 */ } 我可以通过显式使用命名空间X;来引用命名空间X中的user defined literal operator.有没有明确包含命名空间的方式引用文字运算符?我试过了 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; } } _test都在X和X :: literals中.这允许人们使用命名空间X :: literals;没有从X中提取所有内容,但在X _test中也可以使用. 导入单个文字有点烦人. std使用std :: chrono和std :: literals以及std :: chrono :: literals进行此操作.内联命名空间允许您定义命名空间的子部分,您认为人们希望将其作为块导入而不会获取其余的部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |