Специализация шаблона класса C++ с параметрами шаблона значений – как предпочесть один другому?C++

Программы на C++. Форум разработчиков
Anonymous
Специализация шаблона класса C++ с параметрами шаблона значений – как предпочесть один другому?

Сообщение Anonymous »

У меня есть следующий код:

Код: Выделить всё

template
struct combine;

template
struct combine< Tpl, Tpl >
{
using type = Tpl;
};

template
struct pack_upto_impl;

// SPECIALIZATION 1
template
struct pack_upto_impl
{
using type = Tpl;
};

// SPECIALIZATION 2
template
struct pack_upto_impl
{
using remaining_type = typename pack_upto_impl::type;
using type = typename combine::type;
};

template
using pack_upto = pack_upto_impl;
Я хочу, чтобы это делало что-то вроде...

Код: Выделить всё

using T = tuple;
pack_upto var1; // this is tuple
pack_upto var2; // this is tuple
pack_upto var3; // this is tuple
...
Когда я пытаюсь это сделать, я получаю сообщение об ошибке о неоднозначной специализации шаблона: если первые два параметра шаблона package_upto_impl одинаковы, компилятор не получает намекните, что мне нужна СПЕЦИАЛИЗАЦИЯ 1, а не СПЕЦИАЛИЗАЦИЯ 2.
Какой самый элегантный способ добиться этой цели?

Подробнее здесь: https://stackoverflow.com/questions/740 ... -to-prefer

Вернуться в «C++»