Более разумный способ - не хранить n
как элемент данных, а как static constexpr size_t
, чтобы не выделять дополнительное пространство времени выполнения. Это стандартный и наиболее гибкий механизм, позволяющий различным другим шаблонам получать доступ к этому параметру без суеты mu sh. Например, вы можете сделать совершенно другую версию first
и позволить вашему second
использовать другую версию, поддерживая оригинал, при условии, что все версии соответствуют концептуальному интерфейсу.
Аналогично, каждый * Параметр шаблона 1007 * можно пересылать пользователям шаблона через using T = T_;
. В общем, параметры шаблона недоступны, если вы не позволите им быть, объявив их типами или сохранив их значение как constexpr
или иначе.
Вы можете переделать second
, чтобы он принимал тот же параметр шаблона, но это становится сложнее, чем больше у вас других шаблонов, которые используют first
и это значение / тип, или когда вы вдруг захотите использовать second
для альтернативной версии first
. Лучше решать такие проблемы на root. Например, в std
все их классы шаблонов имеют все необходимые типы, объявленные внутри класса аналогичным образом.