Suporte de cópia na gravação no STL
Eu estava lendoum artigo da Wikipedia sobre copy-on-write (curioso se existem sistemas de arquivos que suportam isso), e ficou surpreso com a seguinte passagem:
O COW também é usado fora do kernel, na biblioteca, no aplicativo e no código do sistema. A classe de strings fornecida pela biblioteca padrão C ++, por exemplo, foi projetada especificamente para permitir implementações copy-on-write:
std::string x("Hello");
std::string y = x; // x and y use the same buffer
y += ", World!"; // now y uses a different buffer
// x still uses the same old buffer
Eu não sabia que o copy-on-write era todo suportado no STL. Isso é verdade? Aplica-se a outras classes de STL, por ex.std::vector
oustd::array
? Quais compiladores suportam essa otimização (em particular, gostaria de saber sobre o G ++, o compilador Intel C ++ eo compilador Microsoft C ++)?