я обнаружил, что следующий код компилируется и успешно работает с VS 2015:VARIADIC шаблон в качестве параметра шаблона без расширения пакета
template<typename T, template <typename ...> class Container >
struct Holder
{
Container<T> container_;
};
int main()
{
Holder<int, std::vector> h;
h.container_.push_back(10);
std::cout << h.container_.at(0);
}
Не могли бы вы сказать мне, следует ли таким образом стандарт, чтобы указать на template- параметр шаблона без перечисления типов параметров (тип элементов контейнера и тип распределителя в приведенном выше примере)?
Что это значит _whether этот путь следует за standard_? Это разрешено, вот и все. Вы хотите знать, что библиотека стандартного шаблона что-то делает? Вопрос довольно неясен. – skypjack
Спасибо, я хочу знать, разрешено ли использовать вариационный шаблон таким образом (или это некоторая функция MS C++ non-stadard). –
Пока 'Container' не имеет каких-либо параметров шаблона непигового типа, он будет работать, и он будет стандартным (я использую его с GCC и Clang уже несколько лет). Только более старые версии некоторых компиляторов терпят неудачу, но это ошибка в этих компиляторах. –