C++ 标准 [sec 5.7] 说:
如果指针操作数和结果都指向同一个数组对象的元素,或者超过数组对象的最后一个元素,则计算不应产生溢出;否则,行为未定义。
那么,我是否正确假设未定义其他类型的指针,而不是数组?
例如:
int a = 0;
vector<int> v(&a, (&a)+1);
上面的代码片段编译并且工作得很好(使用 g++),但它有效吗?
C++ 标准 [sec 5.7] 说:
如果指针操作数和结果都指向同一个数组对象的元素,或者超过数组对象的最后一个元素,则计算不应产生溢出;否则,行为未定义。
那么,我是否正确假设未定义其他类型的指针,而不是数组?
例如:
int a = 0;
vector<int> v(&a, (&a)+1);
上面的代码片段编译并且工作得很好(使用 g++),但它有效吗?