访问T作为T UB数组的引用?

时间:2014-10-20 00:51:47

标签: c++ c++11 reference undefined-behavior

我最感兴趣的是:

T& tr = SomeSource();
T* tp = &tr;
T t = tp[5];

引发此问题(and seems to have been asked befor)的具体示例是:

std::string s = "01234567";
char *c = &s[0];

// Do something with it.
c[4] = 'f';  // Is this valid or undefined behavior

上下文:

  • 写入std :: string :: data是明确的UB。
  • std :: string :: operator []可以返回写入的引用是UB(例如越界)。
  • 激励案例的目的是避免使用C函数填充char *并最终使用C ++ std :: string,而不必复制它。

0 个答案:

没有答案