Thanks for the constructive comments, really appreciate it.

> operator bool is for testing whether or not the function was loaded actually. if (func) func(args);
> 
> Objectively:
> Yours doesn't allow library unloading.
> Yours doesn't decrease refcount of the library, but because you declare function pointer as static it's unlikely that we get theoretically possible integer overflow there.

I considered FreeLibrary a good practice and not a problem, because as per msdn:
The system unloads a module when its reference count reaches zero or when the process terminates (regardless of the reference count). 
> Yours is thread unsafe I think, because visual studio doesn't support magic statics properly yet (we don't use visual studio CTP). This probably won't surface on x86, but I'm not 100% sure.
> Yours is impossible to debug.

Agreed, but in practice there shouldn't be anything to debug there...
> 
> Subjectively:
> Yours is not RAII.

Agreed and it is what makes me like your implmentation. 
> I don't like using code generators (preprocessor or not) at all, without rock-solid reasons to. They break too many coding conventions.

Unfortunatelly the whole of MFC was built breaking these conventions :)
> 
> Parameter names are nice and all, but it doesn't justify overall design ugliness in my eyes.
> 
> Anyway, we'll have to postpone the decision until @Underground78 is back (the middle of the next week). And maybe other people have something to say as well.