At that place, eqn has included the header <stdlib.h>. As part of the C++ standard library, <stdlib.h> provides a bunch of stuff, including atexit, in the global scope; it need not provide that stuff in namespace std.
See https://eel.is/c++draft/support.c.headers.other --- src/preproc/eqn/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/preproc/eqn/main.cpp b/src/preproc/eqn/main.cpp index a14ac3632..9db412b2a 100644 --- a/src/preproc/eqn/main.cpp +++ b/src/preproc/eqn/main.cpp @@ -427,7 +427,7 @@ int main(int argc, char **argv) init_table(device); init_char_table(); init_param_table(); - std::atexit(free_param_table); + atexit(free_param_table); printf(".do if !dEQ .ds EQ\n" ".do if !dEN .ds EN\n"); if (output_format == troff) { -- 2.43.0