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

我尝试这样:

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

但它不起作用。

最佳答案

template <typename T>
struct func {};
int (float, bool)本身已经是一种类型。

如果您只想匹配具有2个参数的函数类型,请创建一个类似这样的特殊化:
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;
};

关于c++ - 功能类似于模板参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4986058/

10-13 09:27