Избегайте проблем во время выполнения, утверждая, что объект создан один раз во время компиляции, и избегайте динамических объектов.
Предположим, что есть ряд ресурсов HW, которые не могут использоваться двумя модулями приложения.Позвольте сказать, Булавки.Существуют разные аппаратные конфигурации и выполняются разные сборки - было бы здорово убедиться, что один ресурс HW (например, пин в простейшем случае) используется только один раз, и не проверять это во время выполнения.
template <uint8_t pin>
struct Pin {
static constexpr uint8_t Number = pin;
/*.... */
}
Тогдая могу создать
Pin<1> pin1;
Pin<2> pin2;
Интересно, смогу ли я получить ошибку компиляции / утвердить, когда я объявлю тот же пин еще раз:
Pin<2> pin2duplicate;