gpt4 book ai didi

C++ 命名空间 : using without owning

转载 作者:行者123 更新时间:2023-11-28 01:55:58 25 4
gpt4 key购买 nike

我想在我的命名空间中使用来自另一个命名空间的东西,而不是让它成为我的命名空间的一部分。更具体的我有以下情况:

namespace my_ns{
enum class c: unsigned long long int{};

namespace literals{
constexpr c operator"" _c(unsigned long long int i)noexcept{
return c(i);
}
}

using namespace literals;

auto xyz = 4_c; // OK: use literals::operator""_c
}

void some_function(){
using namespace my_ns; // shall not implicit include my_ns::literals!

auto abc = xyz; // OK
auto def = 4_c; // shall not know my_ns::literals::operator""_c
}

我想在 my_ns 中使用用户文字,但为了与 stdstd::literals 保持一致,而不是在 some_functionusing namespace 之后。您认为一致性争论值得头疼吗?

如果是,是否有办法做到这一点或做类似的事情?

最佳答案

您可以尝试使用嵌套的 detail 命名空间,然后仅将您想要的内容暴露给主 my_ns 命名空间:

namespace my_ns
{
namespace detail
{
using namespace literals;
auto xyz = 4_c; // OK: use literals::operator""_c
}

using detail::xyz;
}

关于C++ 命名空间 : using without owning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186751/

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