私はこの例をBjarneStroustrup(C ++)の(オランダ語に翻訳された)本で試しています:
#include <vector>
#include <list>
#include "complex.h"
complex ac[200];
std::vector<complex> vc;
std::list<complex> l;
template<class In, class Out> void Copy(In from, In too_far, Out to) {
while(from != too_far) {
*to = *from;
++to;
++from;
}
}
void g(std::vector<complex>& vc , std::list<complex>& lc) {
Copy(&ac[0], &ac[200], lc.begin()); // generates debug error
Copy(lc.begin(), lc.end(), vc.begin()); // also generates debug error
}
void f() {
ac[0] = complex(10,20);
g(vc, l);
}
int main () {
f();
}
**コンパイルとリンクは成功します(0エラー/警告)**
しかし、実行時に次のエラーが発生します。
デバッグアサーションに失敗しました!
プログラム:exeへのパス
ファイル:\ program files \ ms vs studio 10.0 \ vc \ include \ list
ライン:207
式:リストイテレータは参照解除できません
プログラムがアサーションの失敗を引き起こす可能性がある方法については、アサーションに関するVisualC++のドキュメントを参照してください。(再試行を押してアプリケーションをデバッグします)