My impression is that it&#x27;s impossible in MSVC&#x27;s C dialect today.  (Obviously there&#x27;s std::min in C++.)<p>AFAICT, it could be done using _Generic and inline functions, if&#x2F;when MSVC adds _Generic.  I&#x27;d expect to see _Generic before seeing any of the GCC extensions, but I&#x27;m not aware of any commitment from MS to add it.  There are some issues with _Generic and qualifiers that might slow its adoption.  e.g. There&#x27;s an open defect report regarding qualified rvalues (DR423), but even lvalues seem to behave differently between GCC 5.2.0 and Clang 3.7.1.  GCC ignores an lvalue&#x27;s qualifiers but still allows a &quot;const int&quot; branch.  AFAICT, a const-qualified branch is never selected with GCC?<p>I&#x27;m wondering whether it&#x27;s possible to use _Generic to require that the left and right operands have the same type (either before or after integral promotions).  Qualifiers are an obvious nuisance, but the bigger problem is that even the unselected branches must still compile, and C does not have tuples.