Можно ли гарантировать, что определенный параметр шаблона (или комбинация параметров шаблона) используется - максимум - один раз?Можно ли отследить, сколько раз он использовался, и выдать ошибку static_assert, если он использовался более одного раза?
В качестве примера - скажем, я хотел создать статический класс GPIO на основе шаблонов:
template<uint8_t Port, uint8_t Pin> class Gpio {};
Можно реально расположить всю плату в одном классе плат:
struct Board {
Gpio<1, 1> myInputPin;
Gpio<1, 2> myOutputPin;
Gpio<2, 0> ledR;
Gpio<2, 1> ledG;
Gpio<2, 2> ledB;
};
Для любой комбинации портов / выводов это имеет смысл только для один шаблон GPIO, который будет создан для этого порта и вывода.Если кто-то создает два разных экземпляра GPIO для одной и той же комбинации портов и выводов, это, вероятно, представляет конфликт, и я хотел бы уловить эту ошибку во время компиляции.
Возможно ли это?