読者です 読者をやめる 読者になる 読者になる

右辺値参照に対応したコンパイラではboost::assign::list_ofが動かない場合がある

C++

BoostML - 【Assign】 Error using list_of() with Visual C++ 2010 Beta 1


GCC 4.4やVC10 Beta1のような右辺値参照に対応したコンパイラでは
boost::assign::list_ofが動かない場合があります。

以下のコードは通りますが

#include <list>
#include <boost/assign/list_of.hpp>

using boost::assign::list_of;

int main()
{
    const std::list<int> primes = list_of(2)(3)(5)(7)(11);
}

以下のようにするとコンパイルエラーになります。

#include <list>
#include <boost/assign/list_of.hpp>

using boost::assign::list_of;

int main()
{
    const std::list<int> primes(list_of(2)(3)(5)(7)(11)); // エラー!
}

list_ofの戻り値の型からコンテナへの変換より先に
listのムーブコンストラクタが呼ばれてしまってるようですね。


んー、なんでだろう。