The macro must be defined before MS system headers are
included.
This rev. remove #define NOMINMAX from public headers,
but no public headers use min()/max() and this was
never the correct way to use this macro as by convention
library headers are included after system headers,
which is too late to have an effect.
Turns out that Enablers as typically used for
member functions don't work to select
constructors.
Move this selection logic to
struct detail::static_shared_vector_caster<>
to correctly allow no-op casts (eg. void to void).
Previously this would not compile.
Allows PVScalarArray getAs() and putFrom() using
shared_vector<const void>.