Add a map as a friend class:
#include <map>
class Hidden {
private:
friend class Visible;
friend class std::map<int, Hidden> ;
Hidden() {}
};
class Visible {
public:
void f() {
std::map<int, Hidden> m;
m[1] = Hidden();
}
};
Of course, this means that you must declare all hidden users inside Hidden, but this is exactly the part of the "private class" template that you use ...
source
share