#define bRead(value, bit) (((value) >> (bit)) & 0x01)
if( ( map & 0x3E ) == 0 )
.!
имеет булеву семантику. Если bRead
объявлена не как bool bRead( ... )
, то использование оператора !
будет вводить людей в заблуждение. Функция называется b-Read
, в которой, согласно Венгерской нотации, b
означает тип результата bool
. Слово Read
означает действие, относительно которого возвращаемое булево значение обычно воспринимается как успешность совершения действия: получилось или нет сделать Read
.b
тоже означает Бит (или, чего еще хуже, функция возвращает бит в виде значения bool
), то пользователь это поймет не сразу. Особенно когда перед bRead
стоит оператор !
и все условие выглядит как проверка на то, что следующие 5 бит после первого прочитать не удалось.( map & 0x3E ) == 0
, это однозначно и понятно читается. Скобки ставят акцент действия и знание порядка операторов тут не при чем. Оговорка - не из стандарта. ... Правильную и неправильную реализацию формализовать нельзя (без явной аттрибуции), потмоу что и тот и тот код может быть верным в зависимости от "оговорок".
а ведь ты мог бы просто согласиться с тем, что твое изложение идет с т.з. некоторой этики разработки. ... Ты оперировал на уровне некоторой смысловой надстройки над стандартом, созданной с учетом изложения стандарта.
Мне не с чем соглашаться.
Вообще, я очень надеюсь, что в стандарте это помечено как UB.
std::is_trivial
. И это будет ошибкой. Именно поэтому я даже предположить не мог, что объект с указателем формально может считаться тривиальным.
Если он владеет объектом, то, по определению (из данной вами ссылки), не может быть тривиальным, потому что у него будет нетривиальный конструктор копирования и деструктор (не рассматриваем вариант с утечкой памяти).
Сам по себе указатель - тривиальный тип
но класс, содержащий указатель (и владещющий адресуемым объектом) не является тривиальным типом.
Я привык к тому, что люди свои заявления подкрепляют доказательствами из достоверных источников. Например из документации продукта. Ты ведь изучил документацию скитера?
Дополнительно, твои слова требуют обоснования неизбежной необходимости. Важность каждого требования необходимо доказать, даже если это требование явно не удовлетворяется в документах библиотеки. В ином случае требования остаются бездоказательными со всеми вытекающими последствиями.
По хорошему, ты это все должен не мне, а исключительно и только себе.