enable_if boost :: fusion callable

时间:2013-02-27 02:05:07

标签: c++ boost-fusion enable-if

有没有办法专门为boost :: fusion可调用对象使用enable_if?

template<typename F>
void do_something(F f, enable_if< is_fusion_callable_object<F> >::type * = 0)
{
    // how to define the "is_fusion_callable_object<> ?
}

这里F是融合“融合函数”可以将任意序列作为参数

1 个答案:

答案 0 :(得分:1)

我尝试了类似的东西,直到现在都没有成功。 我的第一次成功尝试是通过boost praeprocessor makros为不同数量的模板参数创建不同的模板。在你的例子中,这将是

template <typename P1, ......>
do_something(boost::fusion::vector<P1, ....> const& v)

由于我不得不使用VC10,因此我无法使用具有可变参数模板的解决方案。也许这会对你有所帮助,即使这个问题也相当陈旧。