Скажем, у меня есть класс шаблона более одного размера на один тип:подталкивание вариант через несколько возможностей
template<size_t N, typename T>
class C
{};
Я хочу, чтобы создать boost::variant
, который способен удерживать этот класс в течение нескольких типов и размеров, например, для размеров 1
и 2
и типов int
и unsigned int
будет
typedef boost::variant<
C<1, int>,
C<1, unsigned int>,
C<2, int>,
C<2, unsigned int>
> my_variant;
Проблема заключается в том, что мне нужен этот параметр в нескольких местах, и каждый раз с разных размеров и типов. Есть ли какое-нибудь шаблон метапрограммирование магии, чтобы генерировать эти варианты из списка возможных значений, то вдоль линий
typedef generate_variant<C, 1, 2, int, unsigned int>::type my_variant;
Я думаю, что это возможно с вариационными шаблонами. – zapredelom
Нет. Вы не сможете предоставить пакет параметров шаблона, который может быть как интегральным, так и типом. – SergeyA
возможно, используя std :: integral_constant? –