2011-02-13 110 views
1

任何人都可以解释我,如何编写模板参数,如boost::function(例如boost::function<int (float,bool)>)。什么是正确的语法?功能如模板参数

我试试这个:

template <typename T (typename Arg1,typename Arg2)> 
struct func{}; 

,但它不工作。

回答

5
template <typename T> 
struct func {}; 

int (float, bool)本身已经是一种类型。


如果你只匹配类型是一个函数有两个参数,创建这样一个专业化:

template <typename T> 
struct func; 

template <typename R, typename T1, typename T2> 
struct func<R(T1,T2)> { 
    typedef R return_type; 
    typedef T1 first_argument_type; 
    typedef T2 second_argument_type; 
}; 
+0

等待,怎么样?为什么?也许我错过了一些基本的东西,但请解释一下! – Xeo 2011-02-13 18:48:01