Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
template
<
unsigned bitnum,
typename ValueType = uint8_t
>
struct bit
{
static const ValueType value; // по факту value = (ValueType(1) << bitnum);
};
bit<0>::value
...
bit<7>::value
template
<
class pin_ctrl,
class device = LCD_C505,
class orient = tftcd::ORIENTATION<PORTRAIT,240,320>,
...
class dbg = NO_DEBUG
>
struct TFT_LCD;
Здесь мы опять полагаемся на компилятор, который успешно выполняет встраивание (inlining) и удаление тел пустых функций. При сборке релизной версии кода, весь неиспользуемый код будет удален.
extern volatile int somevar;
dbg::debug("Somevar=%d\n", somevar);
void inline debug(const char*, type_of_somevar)
{
}
Использование шаблонного метапрограммирования для микроконтроллеров AVR