怠惰な開発者として、私はこのトリックを使用してデフォルトの関数を指定するのが好きです。
template <class Type, unsigned int Size, class Function = std::less<Type> >
void arrange(std::array<Type, Size> &x, Function&& f = Function())
{
std::sort(std::begin(x), std::end(x), f);
}
しかし、私は非常に特殊なケースで問題を抱えています。それは次のとおりです。
template <class Type, unsigned int Size, class Function = /*SOMETHING 1*/>
void index(std::array<Type, Size> &x, Function&& f = /*SOMETHING 2*/)
{
for (unsigned int i = 0; i < Size; ++i) {
x[i] = f(i);
}
}
この場合、デフォルトの関数を次の関数と同等にしたいと思います[](const unsigned int i){return i;}
(渡された値を返すだけの関数)。
そのためには、との代わりに何を書く必要が/*SOMETHING 1*/
あり/*SOMETHING 2*/
ますか?