typedef typename oost::tuples::element<0,GT>::type tt0;
...
if(tt3==null_type)
Вы не можете проверить типы, как это, используйте mpl::if_
вместо
return boost::tuples::make_tuple<tt0,tt1>(static_cast<tt0>(1), static_cast<tt1>(2));
else
return boost::tuples::make_tuple<tt0, tt1, tt2>(static_cast<tt0>(1), static_cast<tt1>(2), ...);
Вы пытаетесь удалить null_type?Просто используйте boost::fusion::remove
.
Вот еще одно решение:
template <typename T>
tuple<tt0,tt1>
generate(typename enable_if<is_same<tt3, null_type> >::type* = 0) {
typedef typename boost::tuples::element<0,T>::type tt0;
typedef typename boost::tuples::element<1,T>::type tt1;
return make_tuple(tt0(1), tt1(1));
}
аналогично для другого случая.
уведомление: boost::enable_if
, boost::is_same