#pragma GCC visibility push(visibility)
#pragma GCC visibility pop
This pragma allows the user to set the visibility for multiple declarations without having to give each a visibility attribute (see Function Attributes).
In C++, #pragma GCC visibility affects only namespace-scope declarations. Class members and template specializations are not affected; if you want to override the visibility for a particular member or instantiation, you must use an attribute.