[expr.prim.lambda]によると、次のコードは問題ないようです。
#include<functional>
typedef int(*func1)(int);
typedef std::function<int(int)> func2;
int function(int)
{
return 0;
}
template<typename F = func1>
int function1(F f = function)
{
return 0;
}
template<typename F = func2>
int function2(F f = function)
{
return 0;
}
template<typename F = func1>
int function3(F f = [](int i){return 0;})
{
return 0;
}
template<typename F = func2>
int function4(F f = [](int i){return 0;})
{
return 0;
}
ただし、gcc(4.8.1)はエラーを訴えfunction3
、function4
エラーを表示します
'__lambda' を囲むクラスのテンプレート パラメーターの既定の引数
誰かがこのエラーを説明できますか?