作爲一個懶惰的開發者,我喜歡用這種伎倆來指定一個默認功能:剛剛返回傳遞值的默認函數?
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*/
?
+1,而是將'Function()'作爲默認參數,而不是'identity()'。 – 2013-03-04 17:13:48
@ChristianRau:好點。 – Mankarse 2013-03-05 01:03:38
爲什麼你在這裏使用一個結構?爲什麼不把「身份」定義爲一個函數呢? – Claudiu 2014-11-14 21:33:45