Как я могу использовать псевдоним для параметра шаблона, который не используется для специализации шаблона?C++

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

Сообщение Anonymous »


[*]У меня есть шаблон класса template struct foo.
[*]Этот класс может быть вложен, например Итак: foo. Единственный параметр, который принимает структуру foo, — это первый параметр с именем типа T
[*]Я не могу изменить порядок параметров
< /ul>
Проблема, с которой я столкнулся, заключается в том, что для вложенного шаблона специализации struct foo я не использую параметр шаблона int I вообще.
Мне хотелось бы иметь возможность использовать псевдоним для этого параметра, чтобы мне не приходилось писать этот бесполезный параметр для вложенных переменных foo. Я попробовал два способа, но ни один из них не работает. Мне любопытно посмотреть, есть ли вообще способ сделать это чисто. Можете ли вы мне помочь?
Пример кода
#include

template concept foo_base_t = requires { typename T::base_tag; };
template concept foo_nested_t = requires { typename T::nested_tag; };
template concept foo_t = foo_base_t or foo_nested_t;

template concept bar_base_t = requires { typename T::base_tag; };
template concept bar_nested_t = requires { typename T::nested_tag; };
template concept bar_t = bar_base_t or bar_nested_t;

// Version 1 doesn't work
//=============================
template
struct foo
{
using base_tag = void;
};

template
struct foo
{
using nested_tag = void;
};
//=============================

// Version 2 doesn't work
//=============================
template
struct bar_impl
{
using base_tag = void;
};

template
struct bar_impl
{
using nested_tag = void;
};

template
using bar = bar_impl;

template
using bar = bar_impl;
//=============================

int main()
{
using T = foo;
foo o;

using U = bar;
bar o;
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... plate-spec
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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