理解 std::chrono::duration_values 中的最小和最大声明语法的问题
Problems understanding the min and max declarations syntax in std::chrono::duration_values
我正在看下面的一段代码,来自 std::chrono
,但我不明白 _Rep(min)()
语法。
我知道 _Rep
是 return 类型,并且 min
必须是方法名称,但是:
- 写成
_Rep(min)()
和_Rep min()
有什么区别?
- 而且,为什么
zero
没有做同样的事情?
template <class _Rep>
struct duration_values { // gets arithmetic properties of a type
_NODISCARD static constexpr _Rep zero() noexcept {
// get zero value
return _Rep(0);
}
_NODISCARD static constexpr _Rep(min)() noexcept {
// get smallest value
return numeric_limits<_Rep>::lowest();
}
_NODISCARD static constexpr _Rep(max)() noexcept {
// get largest value
return (numeric_limits<_Rep>::max)();
}
};
我在 numeric_limits
中看到了相同的构造:
_NODISCARD static constexpr _Ty(min)() noexcept {
return _Ty();
}
_NODISCARD static constexpr _Ty(max)() noexcept {
return _Ty();
}
更多信息,以备不时之需:
- 我正在使用 Microsoft Visual Studio Professional 2022 Preview(64 位),版本 17.0.0,Preview 1.1。
- 我的
chrono
文件在 Microsoft Visual Studio22\Preview\VC\Tools\MSVC.29.30130\include. 下
还有一个我一直在玩的在线小例子:https://godbolt.org/z/E5nW7x8vW
它是为了打败宏扩展; Windows headers 用于定义名为 min
和 max
.
的宏
我正在看下面的一段代码,来自 std::chrono
,但我不明白 _Rep(min)()
语法。
我知道 _Rep
是 return 类型,并且 min
必须是方法名称,但是:
- 写成
_Rep(min)()
和_Rep min()
有什么区别? - 而且,为什么
zero
没有做同样的事情?
template <class _Rep>
struct duration_values { // gets arithmetic properties of a type
_NODISCARD static constexpr _Rep zero() noexcept {
// get zero value
return _Rep(0);
}
_NODISCARD static constexpr _Rep(min)() noexcept {
// get smallest value
return numeric_limits<_Rep>::lowest();
}
_NODISCARD static constexpr _Rep(max)() noexcept {
// get largest value
return (numeric_limits<_Rep>::max)();
}
};
我在 numeric_limits
中看到了相同的构造:
_NODISCARD static constexpr _Ty(min)() noexcept {
return _Ty();
}
_NODISCARD static constexpr _Ty(max)() noexcept {
return _Ty();
}
更多信息,以备不时之需:
- 我正在使用 Microsoft Visual Studio Professional 2022 Preview(64 位),版本 17.0.0,Preview 1.1。
- 我的
chrono
文件在 Microsoft Visual Studio22\Preview\VC\Tools\MSVC.29.30130\include. 下
还有一个我一直在玩的在线小例子:https://godbolt.org/z/E5nW7x8vW
它是为了打败宏扩展; Windows headers 用于定义名为 min
和 max
.