#pragma once namespace AB_NAMESPACE { // http://en.cppreference.com/w/cpp/algorithm/clamp template constexpr const T &clamp(const T &v, const T &lo, const T &hi) { return assert(!(hi < lo)), (v < lo) ? lo : (hi < v) ? hi : v; } } // namespace AB_NAMESPACE