C ++标准[秒5.7]表示:
如果指针操作数和结果指向相同的数组对象,或一个过去的数组对象的最后一个元素的元素两者,所述评估也不得产生溢出; 否则,行为是不确定的。
所以,我在假设正确的指针其他类型的一过去最期末比阵列是不确定的?
例如:
int a = 0;
vector<int> v(&a, (&a)+1);
上面的代码编译和工作得很好(使用g ++),但它是有效的?
C ++标准[秒5.7]表示:
如果指针操作数和结果指向相同的数组对象,或一个过去的数组对象的最后一个元素的元素两者,所述评估也不得产生溢出; 否则,行为是不确定的。
所以,我在假设正确的指针其他类型的一过去最期末比阵列是不确定的?
例如:
int a = 0;
vector<int> v(&a, (&a)+1);
上面的代码编译和工作得很好(使用g ++),但它是有效的?
不,这是合法的。 5.7(4) - 你报价之前的一个段 - 说:“对于这些操作符的目的,一个指向非数组对象的行为相同的指针长度的一个阵列的所述第一元件与作为对象的类型其元素类型“。