When I taken a look how it looks like, it looks like it is working for singletons.
First call of function NAME will cause creation of singleton and return pointer to that singleton.
During application clean up this singleton still can be used. In case it was already destroyed function NAME will return null pointer (this will prevent use of dangling pointer).
Macro is not documented so it shouldn't be used.
I have doubts how it should be used. Problem is with static keyword.
If macro is used outside of class in header file it will not be singleton, you will have one instance for each cpp file that included that header.
If macro is used outside of class in source file it will be visible only in that cpp file.
If used inside of class this will define inline static method className::NAME so again you will have multiple instances for each use of this method.
So it doesn't look like this macro is very useful. Only in case when you want have singleton visible only in single source file.
Bookmarks