На днях я обнаружил, что это возможно:
template <class T> struct base {};
struct derived: base<int> {};
int main()
{
// The base class template is accessible here
typename derived::base<double> x;
// from the comments, even this works
typename derived::derived::base<double>::base<int>::base<void> y;
}
У меня нет воспоминаний о том, что вы когда-либо читали это на cppreference или в учебниках на С++, или это используется в умных трюках метапрограммирования шаблонов (потому что я уверен, что это может быть). У меня есть несколько вопросов:
- У этой вещи есть определенное имя?
- Где он задокументирован в стандарте С++ и на cppreference?
- Есть ли какой-либо шаблонный метапрограммирующий трюк, использующий это?