Ворвался вчера ночью и соорудил вот это (странно, почему-то на не за архивированный .hpp файл форум ответил, что я не имею права на загрузку):
Нажмите для просмотра прикрепленного файла
https://pastebin.com/PXt4Y0A6
Используется вот так:
BinaryLiteral8bit(10100101)
BinaryLiteral16bit(00100000,00010000)
BinaryLiteral32bit(10000000,01000000,00100000,00010000)
Естественно, никакого рантайма, это константное выражение годное к передаче хоть в параметр шаблона.
Во время компиляции даст по рукам, если вы ошиблись и ввели не 8 цифр на байт или случайно использовали что-то кроме 0 и 1.
Сделано ибо при переезде с GCC на IAR обнаружилось, что 0b10101010 больше не работает ибо это было гнутое расширение, а в стандарте бинарные литералы только начинают появляться.