我只是偶然發現了一個小問題,這個問題在處理模板時給我帶來了困擾。這裏有一個例子:模板函數指針作爲模板參數
template<class _returnType, _returnType (*_function)()>
_returnType aliasGetter() { return _function(); }
int getCoolNumber() { return 42; }
int main()
{
std::cout << aliasGetter<int, &getCoolNumber>(); //42
}
此代碼(http://cpp.sh/,如果你想嘗試一下),但是因爲我給一個函數指針作爲模板參數我不應該需要_returnType,這是正確的,在函數簽名,問題是,不管我多努力嘗試,我都找不到一種方法來擺脫這個額外的模板參數。
我該如何讓aliasGetter
只接受一個模板參數(指向getter指向別名的指針)? 如果這是不可能的,爲什麼不呢?
如何使用單個模板參數並依賴模板參數扣除? – WhiZTiM
@WhiZTiM這需要在運行時將函數指針傳遞給調用。 –
您需要它,因爲您的第二個模板參數依賴於它。你可以用https://functionalcpp.wordpress.com/2013/08/05/function-traits/建立一些東西,但我懷疑你會保存一個模板參數。 – knivil