std::tr1::array は、範囲外のインデックスにアクセスすると例外がスローされるという点で、boost::array と同じであるという印象を受けました。実際、ヘッダーをのぞいてみたところ、そのように見えます。次のコードがバス エラー (gcc バージョン 4.0.1 (Apple Inc. ビルド 5465)) と gcc 4.1.2 での segfault になる理由を誰か説明できますか?
ありがとう。
#include <exception>
#include <iostream>
#include <string>
#include <tr1/array>
#include <boost/array.hpp>
int main()
{
// boost::array<std::string, 3> arr;
std::tr1::array<std::string, 3> arr;
try
{
arr.at( 0 ) = "one";
arr.at( 1 ) = "two";
arr.at( 2 ) = "three";
arr.at( 3 ) = "nogood";
}
catch ( const std::exception& e )
{
std::cout << "exception: " << e.what() << std::endl;
}
return 0;
}