Перейти к содержанию
    

C++98 совместимый двоичный литерал

Ворвался вчера ночью и соорудил вот это (странно, почему-то на не за архивированный .hpp файл форум ответил, что я не имею права на загрузку):

BinaryLiteral.zip

https://pastebin.com/PXt4Y0A6

 

Используется вот так:

BinaryLiteral8bit(10100101)

BinaryLiteral16bit(00100000,00010000)

BinaryLiteral32bit(10000000,01000000,00100000,00010000)

 

Естественно, никакого рантайма, это константное выражение годное к передаче хоть в параметр шаблона.

Во время компиляции даст по рукам, если вы ошиблись и ввели не 8 цифр на байт или случайно использовали что-то кроме 0 и 1.

 

Сделано ибо при переезде с GCC на IAR обнаружилось, что 0b10101010 больше не работает ибо это было гнутое расширение, а в стандарте бинарные литералы только начинают появляться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если тянуть буст, то может и пользоваться бустом?

УПД Вообще какая-то каша, что-то частично стянуто с буста... лицензию от буста забыли добавить, бррр.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из буста же только статик ассерт. Ну лицензию надо бы, да )

 

про BOOST_BINARY кстати не знал. Ох веселая реализация у них!

 

Upd:

Даа.... У меня простая рекурсивная шаблонная магия, а там препроцессорная. Препроцессорная черная магия! ))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

имхо при чтении перепутать положение какой-нибудь единицы в 8ми значном слове куда проще чем при конверсии из hex в уме.

да и при записи ошибиться проще, если без проверок, ну а с проверкой на количество введённых символов, пожалуй без разницы.

соответственно именно поэтому скорее всего и нет стандартных средств - за ненадобностью.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...