Мне нужно объявить класс, который может хранить различные типы контейнеров. Т.е. было бы неплохо, если бы он мог обрабатывать std :: bitset и std :: array. Однако эти два класса нуждаются в разных аргументах шаблона ... Возможно ли (и, возможно, как) использовать шаблонные шаблонные классы и вариативные шаблоны для объявления этого класса?Объявить объект «контейнер» из шаблонного шаблона и вариативных шаблонов
Пример (но неправильно):
template<template <typename..., std::size_t> class Container,
std::size_t N,
typename... Args>
class Base_Class
{
...
Container<Args..., N/2> container;
};
Компилятор жалуется, что N/2 не является типом. Очевидно, что для std :: array и std :: bitset мне нужен размер, который будет последним параметром шаблона ... Возможно ли кодировать эту сумасшедшую?
Спасибо!
EDIT: Насколько мне известно, основная проблема заключается в том, что вариационные шаблоны могут быть расширены только справа, поэтому переменный параметр должен быть последним. Кто-нибудь знает, есть ли планы разрешить следующий синтаксис в C++ 17?
template<typename... Args, typename T>
struct A
{};
, какой компилятор ? – Walter
Он дает ошибку как с g ++, так и с clang (очевидно, с параметром -std = C++ 11/14) – dodomorandi