Возможно, это уже ответили или это обычное дело, но мне не хватает подходящего термина для поиска по этому поводу.
Для приведенного ниже примера кода:
// In a separate file
enum class SignsEnum : uint32_t
{
S1 = 0,
S2,
S3
};
std::array<SignsEnum, 10> arrayMyEnum1 = {{.....}};
// other template class file
template<typename ENUM_T, typename ARRAY_T>
class SignsProc
{
int32_t SignConvrsn(ENUM_T InSign)
{
}
int32_t ProcData(ARRAY_T& InData)
{}
}
Будет создан экземпляр класса шаблона с аргументами шаблона из перечисленного выше примера перечисления и типов массива:
например SignsProc<SignsEnum , std::array<SignsEnum, 10>> objSignsProc;
На самом деле, мне может потребоваться передать еще 4-5 типов в аргументы шаблона класса.Принимая во внимание, например, что в приведенном выше примере массив содержит объект типа "SignsEnum" в качестве элементов массива.Теперь этот тип снова передается как 1-й аргумент шаблона, так что функция (SignConvrsn) может быть определена, как в примере выше.Итак, можно ли как-то найти и использовать тип "SignsEnum" из типа массива вместо того, чтобы передавать его отдельно?
Проблема в том, что: Слишком много аргументов шаблона (и кажется избыточным)
Цель: , чтобы уменьшить количество аргументов шаблона
Спасибо
Редактировать (дополнительный сценарий):
, если для случая элемент массива является структурой, а элемент структуры не имеет типа SignsEnum,тогда возможно ли извлечь из него тип "SignsEnum"?
// In a separate file
enum class SignsEnum : uint32_t
{
S1 = 0,
S2,
S3
};
struct SignsConfig
{
SignsEnum sign;
int32_t config1;
int32_t config2;
}
std::array<SignsConfig, 10> arrayMyEnum1 = {{.....}};