Soporte de copia en escritura en STL
Solo estaba leyendoun artículo de Wikipedia sobre Copia en escritura (Es curioso si hay algún sistema de archivos que lo soporte), y se sorprendió con el siguiente pasaje:
COW también se usa fuera del kernel, en la biblioteca, la aplicación y el código del sistema. La clase de cadena proporcionada por la biblioteca estándar de C ++, por ejemplo, fue diseñada específicamente para permitir implementaciones de copia en escritura:
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
No sabía que la copia en escritura era compatible con STL. ¿Es eso cierto? ¿Se aplica a otras clases STL, por ejemplo,std::vector
ostd::array
? ¿Qué compiladores admiten esa optimización (en particular, me pregunto acerca de G ++, el compilador Intel C ++ y el compilador Microsoft C ++)?