#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);
}
上面的例子失敗,下一個錯誤消息來編譯(使用克++ 4.6.1)從lambda表達式推斷類型:未能在初始化列表中
error: unable to deduce 'const std::initializer_list<const auto> []' from '{{}, {}, {}}'
的註釋行工作正常(沒有指定功能類型)。
這是g ++的怪癖嗎?或者是否有標準中的任何內容告訴上述不應該編譯?
'[expr.prim.lambda]/3'告訴確切的。不知道我怎麼看不見它。謝謝。 –