这个表达式为什么要这样写

这个表达式为什么要这么写?
在网上看到c++ min函数的实现,如下:
template <class T> const T& min (const T& a, const T& b) {
  return !(b<a)?a:b;     // or: return !comp(b,a)?a:b; for version (2)
}


为什么要用“!“?注释里的写法也用了”!“。为什么不直接写成如下:
template <class T> const T& min (const T& a, const T& b) {
  return a<b?a:b;     // or: return !comp(b,a)?a:b; for version (2)
}


有什么玄机吗?
------解决方案--------------------
涉及到规则、范式等逻辑推到方面的内容
b<a不成立需要能够导出a<b,这里给出的其实是a<=b