Наличие специального варианта класса шаблона C++, в котором параметр шаблона опущен.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Наличие специального варианта класса шаблона C++, в котором параметр шаблона опущен.

Сообщение Anonymous »

У меня есть класс-шаблон с одним параметром и несколькими небольшими функциями-членами.

Код: Выделить всё

template
class SFRegT {
public:

void Reset() const {
*(volatile uint32_t*)mRegAddr = 0;
}

void Set(uint32_t  Value) const {
*(uint32_t*)mRegAddr = Value;
}

uint32_t Get() const {
return *(volatile uint32_t*)mRegAddr;
}

uint32_t  operator()() const { return Get(); }

void setBit(const uint16_t BitPos) const {
setSFRBit(mRegAddr, BitPos);
}
// and some more member
};
Теперь мне нужен еще один аналогичный класс, в котором мой параметр больше не является параметром шаблона, а является переменной-членом constexpr.

Код: Выделить всё

template
class SFRegT {
public:
constexpr SFReg(uintptr_t RegAddr) :
mRegAddr(RegAddr) {
}
// the same member functions as above
private:
const uintptr_t mRegAddr;
};
Есть ли способ избежать избыточности? Итак, у вас есть только один класс шаблона с двумя вариантами: в одном конструктор и переменная-член опускаются, если присутствует параметр шаблона, а в другом присутствуют конструктор и локальный параметр, если параметр шаблона опущен.


Подробнее здесь: https://stackoverflow.com/questions/798 ... er-is-omit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»