Я пытаюсь добиться чего-то вроде следующего:
template <typename T>
class MyClass {
struct nested {
using OtherT = // Some type derived from T
};
protected:
// Any way to avoid `typename` here?
typename nested::OtherT member;
};
Есть ли способ использовать типы, вложенные в struct / namespace / other, которые вычисляются из типа шаблона T
, безиспользуя ключевое слово typename
? Я открыт для объявления nested
любым другим способом, его целью является только удержание типов.
Редактировать : причина, по которой я пытаюсь это сделать, заключается в том, что у меня будет целоеколлекция типов, полученных из T
, уже видимых внутри MyClass
, а затем тесно связанные варианты тех же типов внутри nested
. Я надеюсь использовать nested
, чтобы четко и кратко их различить. Эта ситуация будет появляться во многих местах кодовой базы, поэтому я надеялся не видеть typename
везде, где упоминаются эти типы.