In C++, what happens with std::string when you write: std::string a = "123"; std::string b = a; Describe which operations are invoked (copy construction vs move), typical allocation and Small String Optimization behavior, and why copy-on-write is not required by the standard.