C 名称空间:使用无拥有
C++ namespace: using without owning
我想在我的名称空间中使用其他名称空间中的东西,而不会使其成为我的命名空间的一部分。更具体的我有以下情况:
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
中使用用户文字,但要与std
和std::literals
保持一致,而some_function
不在using namespace
之后。您认为一致性论点值得头痛吗?
如果是这样,有没有办法做或做类似的事情?
您可以尝试使用嵌套的detail
名称空间,然后仅将您想要的东西展示到主my_ns
名称空间:
namespace my_ns
{
namespace detail
{
using namespace literals;
auto xyz = 4_c; // OK: use literals::operator""_c
}
using detail::xyz;
}
您可以使用另一个名称空间,然后将其公开
namespace Rtos
{
constexpr unsigned long long operator "" ms(unsigned long long ms)
{
return ms / portTICK_PERIOD_MS ;
} ;
}
namespace GlobalVars
{
using Rtos::operator""ms ;
Rtos::Event event{1000ms, 1} ;
}
using GlobalVars::event ;
void SomeFunction()
{
event.Signal();
}
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 在 c++ 中拥有一组结构的正确方法是什么?
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- OpenGL相机和相机空间转型的困惑
- CUDA内核和数学函数的显式命名空间
- 打印第二列时的2d字符矢量打印空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 请告诉我在巴泽尔拥有多平台工作空间的更好方法
- C 名称空间:使用无拥有
- 拥有与命名空间同名的变量是否正确