在函数范围之外的标头中使用 UDL
Using UDL in header outside function scope
如果我们想使用一些UDL,我们需要使用相应的命名空间:
auto foo()
{
using namespace std::literals::chrono_literals;
std::chrono::milliseconds interval = 1s;
}
这很好,因为引入的命名空间已本地化为函数。
但是我还没有找到在函数范围之外使用它们的解决方案(例如类内初始值设定项或函数默认参数(,而不会污染封闭命名空间:
// this is a header
namespace my_ns
{
// I would like to avoid this:
// using namespace std::literals::chrono_literals;
struct Foo
{
// can't have a using directive at class scope:
// using namespace std::literals::chrono_literals;
// I want to do this
std::chrono::milliseconds interval = 1s;
// I want to pretty pretty pretty please do this:
Foo(std::chrono:milliseconds interval = 1s) : interval{interval} {}
};
}
这里有更好的使用 UDL 的方法吗?
这个怎么样?
namespace my_ns {
namespace _ {
using namespace std::literals::chrono_literals;
struct Foo {
std::chrono::milliseconds interval = 1s;
Foo(std::chrono:milliseconds interval = 1s) : interval{interval} {}
};
}
using Foo = _::Foo;
}
您可以添加一个(私有(函数作为解决方法:
namespace my_ns
{
struct Foo
{
std::chrono::milliseconds interval = one_second();
Foo(std::chrono::milliseconds interval = one_second()) : interval{interval} {}
private:
static std::chrono::seconds one_second() {
using namespace std::literals::chrono_literals;
return 1s;
}
};
}
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 在函数范围之外的标头中使用 UDL