// 21.4.2/2 (the copy ctor): data()
// points at the first element of an allocated copy
// of the array whose first element is pointed at by
// str.data()
#include <string>
#include <cassert>
void f(const std::string& a, const std::string& b)
{
assert(std::not_equal_to<const char*>()(a.data(), b.data()));
}
int main()
{
std::string a("abc");
std::string b(a);
f(a, b);
}
Ly8gMjEuNC4yLzIgKHRoZSBjb3B5IGN0b3IpOiBkYXRhKCkKLy8gcG9pbnRzIGF0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGFuIGFsbG9jYXRlZCBjb3B5Ci8vIG9mIHRoZSBhcnJheSB3aG9zZSBmaXJzdCBlbGVtZW50IGlzIHBvaW50ZWQgYXQgYnkKLy8gc3RyLmRhdGEoKQojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y2Fzc2VydD4KCnZvaWQgZihjb25zdCBzdGQ6OnN0cmluZyYgYSwgY29uc3Qgc3RkOjpzdHJpbmcmIGIpCnsKICBhc3NlcnQoc3RkOjpub3RfZXF1YWxfdG88Y29uc3QgY2hhcio+KCkoYS5kYXRhKCksIGIuZGF0YSgpKSk7Cn0KCmludCBtYWluKCkKewogIHN0ZDo6c3RyaW5nIGEoImFiYyIpOwogIHN0ZDo6c3RyaW5nIGIoYSk7CiAgZihhLCBiKTsKfQ==