有没有办法专门为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是融合“融合函数”可以将任意序列作为参数
答案 0 :(得分:1)
我尝试了类似的东西,直到现在都没有成功。 我的第一次成功尝试是通过boost praeprocessor makros为不同数量的模板参数创建不同的模板。在你的例子中,这将是
template <typename P1, ......>
do_something(boost::fusion::vector<P1, ....> const& v)
由于我不得不使用VC10,因此我无法使用具有可变参数模板的解决方案。也许这会对你有所帮助,即使这个问题也相当陈旧。