Why do a SFINAE function template and a regular function template have different binding rules?
I had a checker function that used the requires
keyword to detect if a target function was defined or not. I wanted to make it work with C++17, so I switched the checker from using requires
to using expression SFINAE.