Como o std :: string é implementado?

Estou curioso para saber como std :: string é implementado e como ele difere de c string? Se o padrão não especifica qualquer implementação, então qualquer implementação com explicação seria ótimo com a forma como ele satisfaz o requisito de string dado pelo padrão?