Using NIL instead of EMPTY() to mark empty sign (for correct tuple handling on MSVC).
compiled tests up to pp-func-traits template on msvc, gcc, clang, and wave