8 #ifndef INCLUDE_TEMPLE_STL_17
9 #define INCLUDE_TEMPLE_STL_17
11 #include <type_traits>
16 namespace Molassembler {
21 template<
class T,
class Compare>
22 constexpr
const T& clamp(
const T& v,
const T& lo,
const T& hi, Compare comp ) {
23 return assert( !comp(hi, lo) ),
24 comp(v, lo) ? lo : comp(hi, v) ? hi : v;
28 constexpr
const T& clamp(
const T& v,
const T& lo,
const T& hi ) {
29 return clamp( v, lo, hi, std::less<T>() );
33 constexpr std::add_const_t<T>& as_const(T& t) noexcept {