Кто-то может знает, как это сделать можно?
template <class... List>
struct A {
using head = head<List...>;
using tail = tail<List...>; // decltype(tail<List...>) == A<...>
};
Понятно, что using tail запустит раскрутку всего списка аргументов, потому хотелось бы, чтобы это при надобности происходило только. Хотя даже если так уметь, то он не до конца будет раскручиваться, а только на столько уровней, на сколько надо. Как будто бы такое мб и не делается, потому что могут быть ситуации вот такие: A<List...>::tail::tail::tail, и не очень понятно, как их детектить. Но вдруг есть хоть какие-то варанты.
специализация / if constexpr
Не понимаю, в каком направлении с ними двигаться.
Сделай tail шаблоном
Ну видимо так и придётся, жаль только, что использование становится некрасивым.
Обсуждают сегодня