Я работаю над шаблоном C ++ HAL (Hardware Abstraction Library).Я пытаюсь создать абстракцию регистра, которая принимает адрес регистра как параметр шаблона как uint32_t
или как указатель, но я не знаю, как это сделать, потому что это вызывает перегрузку параметра шаблона.
Неверный пример, вызывающий redeclareошибка параметра:
template<uint32_t addr>
struct reg
{
...
};
template<uint32_t* addr>
struct reg
{
...
};
Я думал о специализации шаблона:
template<class T>
struct reg {};
template<>
struct reg<uint32_t>
{
...
};
template<>
struct reg<uint32_t*>
{
...
};
Но я не могу получить фактическое значение адреса таким образом.
Есть ли способсделать это?