23
這是這個問題的追問:Generic functor for functions with any argument list如何在variadic模板類中獲取函數指針的參數類型?
我有這樣的函數子類(完整的代碼見上面的鏈接):
template<typename... ARGS>
class Foo
{
std::function<void(ARGS...)> m_f;
public:
Foo(std::function<void(ARGS...)> f) : m_f(f) {}
void operator()(ARGS... args) const { m_f(args...); }
};
在運營商()我可以訪問ARGS ...輕鬆地與這裏描述的遞歸「剝皮」功能http://www2.research.att.com/~bs/C++0xFAQ.html#variadic-templates
我的問題是:我想在構造函數中訪問f的參數類型,即ARGS ...。顯然我無法訪問值,因爲目前還沒有值,但參數類型列表以某種方式在f中被埋沒,不是嗎?
謝謝@Nawaz,迄今爲止工作。儘管如此,我想從這個解決方案中提取出「魔術」並將其放入我的代碼中。我認爲typename std :: tuple_element > :: type是它發生的地方......我該怎麼做,而不必申報另一個struct – steffen 2012-01-30 15:03:36
@steffen:在定義另一個結構體時是否有任何問題哪些可以在其他情況下使用?而且,將所有代碼放在一個類中並不是一個好主意。嘗試將代碼分成小工作單元。 – Nawaz 2012-01-30 15:11:00
我明白你的觀點。最後一個問題是來自boost庫的這段代碼? function_traits聽起來很熟悉;) – steffen 2012-01-30 15:15:03