#include <functional>
#include <iostream>
namespace{
//const std::function< void( const int ) > foo[] =
const auto foo[] =
{
[]( const int v ){ std::cout<<v<<std::endl; },
[]( const int v ){ std::cout<<v/2<<std::endl; },
[]( const int v ){ std::cout<<v/3<<std::endl; },
};
}
int main()
{
foo[1](5);
}
上記の例は、(g++ 4.6.1 を使用して) コンパイルに失敗し、次のエラー メッセージが表示されます。
error: unable to deduce 'const std::initializer_list<const auto> []' from '{{}, {}, {}}'
コメント行は正常に機能します (関数の型を指定しなくても)。
これはg ++の癖ですか?または、上記をコンパイルしないように指示する標準に何かありますか?