А чем это лучше, чем просто переопределить operator<<? template<typename S, typename A, typename B>
S& operator<<(S& s, const std::pair<A,B>& p) {
return s << '(' << p.a << ',' << p.b << ')';
}
pwdhash мой друг. Пароли вычисляются как хэш от ключевой фразы и url ресурса. Достоинство по сравнению с KeePass & friends — база паролей нигде не хранится
template<typename S, typename A, typename B>
S& operator<<(S& s, const std::pair<A,B>& p) {
return s << '(' << p.a << ',' << p.b << ')';
}