Я хочу определить boost fusion :: vector в моем классе с размером, определяемым параметром шаблона. ATM Я делаю это со специализацией класса-помощника, но я думаю, что должен быть способ сделать это с помощью boost mpl/fusion или что-то еще в одной строке.Определить кортеж с переменным размером
namespace detail
{
template<int dim, typename T>
struct DimensionTupleSize
{ };
template <typename T>
struct DimensionTupleSize<1>
{
enum { Dimension = 1 }
typedef boost::fusion::vector<T> type;
};
template <typename T>
struct DimensionTupleSize<2>
{
enum { Dimension = 2 }
typedef boost::fusion::vector<T, T> type;
};
template <typename T>
struct DimensionTupleSize<3>
{
enum { Dimension = 3 }
typedef boost::fusion::vector<T, T, T> type;
};
}
template<int Dim = 2>
class QuadTreeLevel
{
public:
detail::DimensionTupleSize<Dim>::type tpl;
};
Любые идеи?
Вы уверены, что не используете ['boost :: array '] (http://www.boost.org/doc/libs/release/doc/html/array.html) (' array' также включен в стандартную библиотеку C++ 11)? –
Не знаю, почему я об этом не думал. Может быть лучшим решением. – Smittii