Those are functions created by STL templating mechanisms. The visibility of those names is under control of sTL, so your code can't affect whether they are visible.
It's not clear if you simply want to reduce the amount of symbols, or you actually want to hide a specific name from your shared library - for example if you have class MySecretObject
, that you want to hide is different from the symbol table contains thousands of names and it annoys me.
You could, possibly, create a wrapper type that hides the actual name, but in some way or another, if you really want to hide the existence of an object, you need to modify the STL to not expose it. Of course, it also means that you will need to use that special name [although sometimes clever use of macros can avoid this].
There is no simple/recommended way to avoid some symbols being exported by the STL. That's going to happen. You can control what their names are if you use a wrapper type, but it's not really going to change the number or types of names exported, just the exact name being exposed.
I'll happily expand on the answer if you explain what your concern is for "I just want to only export those that I want to export".
Edit:
I believe it will work to "hide" a name by wrapping the object in another class:
class HidePoint
{
public:
Point p;
};
Now, you will of course expose HidePoint
, but if you call it A
or W
or something like that, then it's hidden.
Alternatively:
#define Point SomeOtherUniqueName
will make the name be hidden.