3
我有一個函數應該接受任何類型的參數。因此我使用模板。通過無效作爲函數參數
template <typename T>
void Function(T Parameter);
該函數的功能是調用函數。在我的真實應用程序中,有一個帶有字符串鍵的回調映射,但對此問題無關緊要。回調必須是返回類型爲void但函數參數類型的函數指針。
void* Callback;
template <typename T>
void Function(T Parameter)
{
(function<void(T))Callback(Parameter);
}
假設回調是正確的類型,這應該像下面的工作。
Function<int>(42);
// should result in...
(function<void(int))Callback(42);
但在某些情況下,我想通過void
作爲參數。
Function<void>(void);
// should result in...
(function<void(void)>Callback(void);
正如你所看到的,我需要提供什麼或void
作爲參數。但是我不能通過void
作爲參數,所以有一個錯誤,即typename會不正確。
如何將void
作爲函數參數傳遞?
有可能是'提升',但如果你只是寫了'功能'會發生什麼? –
你應該有一個可變參數模板,比如'template void Function(Args ...)'。我們幾天前討論過這個問題。四處搜尋。 –
聽起來像模板專業化的工作。不幸的是,它不支持類外funcs – SomeWittyUsername