https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111327
--- Comment #6 from Jiang An <de34 at live dot cn> --- It seems that deleted operator() overloads in the return type of std::not_fn is only necessary since C++20. The changes were made in P0356R5. In C++17, the return type was nearly fully specified and didn't have deleted overloads. https://timsong-cpp.github.io/cppwp/n4659/func.not_fn#1