Detecting existence of a class member
Your detector fails in the face of overloading and templating. Also, it will only detect (static) member-variables and (static) member-functions. While you can extend it to types (and type-aliases), accepting templates and overloading would need better language-provided reflection-facilities.

Anyway, pure existence is generally uninteresting, supported operations count.
funcs() and funcs_t are nearly a generally useful abstraction.

Just use perfect forwarding instead of by-value and std::move(). Allowing for all callables, including final classes, function-pointers, member-function-pointers, and the same wrapped in a std::reference_wrapper would admittedly add significant amounts of code.

A good name would be overloaded.
HAS_MEMBER needlessly depends on default-constructing the passed class. Fix that by using decltype, std::declval() and unevaluated contexts.
If you don't use an argument, don't name it. Specifically for main(), just don't ask for it.
Don't use std::endl. In the rare cases you actually need to flush manually, be explicit and use std::flush. Nearly always you are just crippling performance.
return 0; is implicit for main(). Make of that what you will.