Специализация шаблона класса 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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