boost::arrayの初期化
boost::arrayを初期化する際に以下のように書く. どちらも普通にコンパイルした場合は通るが, strictなチェックでは"warning: missing braces around initializer for 'int [4]'"などと言われて, Line2が落ちる. ようするにLine 1が正しい記述である.
boost::array<int,4> a = {{1, 2, 3}}; // Line 1 boost::array<int,4> a = {1, 2, 3}; // Line 2
これがなぜだかわからなかったのだが, 結局boost::arrayの実装の実態によるものらしい. boost::arrayは以下のような構造を持つ.
struct array
{
T elems[N];
};
従って, structの初期化と内側の配列の初期化で2つの波括弧が必要である. ということらしい.
http://stackoverflow.com/questions/2687701/how-should-i-initialize-a-boostarray