std::clamp
如果其中一个min
或max
参数是rvalues ,最好不要将返回值绑定到const ref .
典型的实现std::clamp
(非常简化):
templateconstexpr const T& clamp(const T& value, const T& min, const T& max) { return value < min ? min : max < value ? max : value; }
正如已经在std :: clamp的cppreference中所述,当有人写道时会出现危险的情况:
int n = -1; const int& r = std::clamp(n, 0, 255); // r is dangling
有没有办法编译时检测这些情况?