This patch fixes a number of problems with the visibility macros across GCC (on Unix) and Windows (DLL import/export semantics). All of the visibility macros are now documented under DesignDocs/VisibilityMacros.rst. Now I'll no longer forget the subtleties of each!
This patch adds two new visibility macros:
- _LIBCPP_ENUM_VIS for controlling the typeinfo of enum types. Only Clang supports this.
- _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS for redefining visibility on explicit instantiation declarations. Clang and Windows require this.
After applying this patch GCC only emits one -Wattribute warning opposed to 30+.
The _LIBCPP_TYPE_VIS at the start of this line seems out of place?