1
是string.assign(string.data(),5)定义明确的还是UB?
一位同事想这样写: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); 我说过归来string_view使我先天不安,而且,在我看来,这里的别名看起来像UB。 我可以肯定地说line = strip_whitespace(line)在这种情况下等于line = std::string_view(line.data(), 5)。我相信will call string::operator=(const T&) [with T=string_view],其定义为等同于line.assign(const T&) [with T=string_view],其定义为等同于line.assign(line.data(), 5),定义为执行此操作: Preconditions: [s, s + n) is a valid range. Effects: Replaces the string controlled by *this with a copy of the range …