【发布时间】:2015-10-30 05:59:16
【问题描述】:
代码:
#include <valarray>
#include <iostream>
using namespace std;
int main()
{
valarray<int> v0(2, 4);
valarray<int> v1;
v1 = v0;
cout << "v0.size: " << v0.size() << endl;
cout << "v1.size: " << v1.size() << endl;
cout << "v0[0]: " << v0[0] << endl;
cout << "v1[0]: " << v1[0] << endl;
}
输出:
v0.size: 4
v1.size: 0
v0[0]: 2
Segmentation fault
作业:
v1 = v0;
我认为构造函数:
valarray<T>& operator=( const valarray<T>& other );
应该使用,并且根据documentation,我认为应该调整 v1 的大小并将 v0 的内容复制到其中,一个元素一个元素。那么到底发生了什么?
$ g++ --version
g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
【问题讨论】:
-
您使用的是什么平台、编译器、版本、标准库实现等?工作得很好here。
-
你确定这是你的输出吗?该文本甚至与您传递给
cout的字符串不匹配。 -
@Bryant 显示的输出与代码不对应。
-
@Praetorian:一定是我的实现之类的。我在 Centos 机器上,但我的组织使用非常旧的库等。 g++ --version g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
-
等等,我很困惑。有人曾将此称为a GCC bug,但结论是这是符合标准的。这是错误的,或者 cppreference.com 页面是错误的。 (或者在 cppreference.com 页面上没有反映的过程中某处发生了变化)
标签: c++ assignment-operator valarray