Как внести имя шаблона в класс с помощью using declaration?

130
24 мая 2019, 13:00
template<typename T>
struct Base {
    using type_from_base = T;
    template<typename T2>
    struct template_from_base {};
};
template<typename T>
class Derived : Base<T> {
public:
//    using Base<T>::type_from_base; // error
    using typename Base<T>::type_from_base;
//    using Base<T>::template template_from_base; // error
    // ???
    type_from_base        member_1;
    template_from_base<T> member_2;
};

int main() {
    Derived<int> x{};
}

Чтобы внести имя зависимого типа из базового класса в класс-наследник с помощью using declaration, нужно явно указать ключевое слово typename. Но как внести имя шаблона в таком случае? Интересует решение как для шаблонного класса, так и для шаблонной функции.

Answer 1

Алиас для шаблона будет

template<typename T2> using
template_from_base = typename Base<T>::template template_from_base<T2>;

Для шаблонной функции ничего необычного, using Base<T>::foo;

READ ALSO
Зачем super в методах? Android

Зачем super в методах? Android

Часто встречаю код, примерно как этот:

119
Ошибка при создании Image

Ошибка при создании Image

Вот возникает такая ошибка, как ее исправить помогите пожалуйста: Exception in thread "AWT-EventQueue-0" javalang

129
Spring Security Как отображать все страницы кроме

Spring Security Как отображать все страницы кроме

Столкнулся со следующей проблемойХочу реализовать отображение всех страниц для не авторизированных пользователей кроме страницы accaunt

139
JAVA,Как сделать , чтоб ID начинался с 1000 mysql?

JAVA,Как сделать , чтоб ID начинался с 1000 mysql?

Делаю проект на java добавления студентов в бдУ меня есть уже готовая таблица

115