Как ленивый разработчик, мне нравится использовать этот трюк, чтобы указать функцию по умолчанию:
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*/
?