It is specified clearly though. The behavior is not compiler dependent, it's specified in the C++ Language standard. See http://en.cppreference.com/w/cpp/language/default_initializa... and http://www.cplusplus.com/reference/string/string/string/
If a different compiler breaks this behavior, it's not standard compliant and thus could do all sorts of stuff in every possible line, including in:
std::string pad = "";