Есть ли способ использовать enable_if специально для вызываемых объектов boost :: fusion?
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 — это «объединенная функция», которая может принимать произвольную последовательность в качестве параметра.
Я пробовал нечто подобное, до сих пор безуспешно.
Моей первой успешной попыткой было создание для другого числа параметров шаблона различных шаблонов с помощью boost praeprocessor makros. В ваших примерах это будет
template <typename P1, ......>
do_something(boost::fusion::vector<P1, ....> const& v)
Так как я должен был использовать VC10, я не мог использовать решение с переменными шаблонами. Возможно, это поможет вам в дальнейшем, даже вопрос довольно старый.
Других решений пока нет …