true
и нет false
. И в каждой библиотеке есть свое определение булевых операций._Bool
с семантикой булева значения и строго определенными операциями. Только мало кто про это знает даже сегодня.bool
, где значение указателя эквивалентное nullptr
будет означать false
, а любое другое значение указателя - true
.В одном проекте есть библиотека, используемая также в ряде других проектов подобного толка. В ней есть тип uint128
Почему за столько лет удобнейший и шустрый С++ не покорил веб?
запускаю VS подгружаю solution
а далее мы видим, что он всё равно собирает в x32
разницы по платформе тоже не увидел всё так же как на предыдущем скирншоте
nothrow_t
относится к C++17. Посмотри какой стандарт у тебя сейчас используется и есть ли для компилятора возможность перейти на C++17.
Гайдлайн советует не протекать и никогда не передавать сырые указатели. Когда код снаружи принимает указатель, в нем обильно появляются сервисные вставки для проверки указателя на нуль. Во избежание смешивания сервисного кода с функциональным кодом гайдлайн тоже рекомендует некоторые защитные ухищрения.
Проблема сырого указателя в том, что его природа неясна. Это указатель на массив или на индивидуальный объект? На массив из скольки элементов: из одного или из миллиона? Этот указатель со стека или из кучи? Этим указателем можно завладеть или удалить его? Нужно ли его сейчас удалять или его удалят потом?
У сырого указателя нет семантики. А у вектора - есть. Вектор - это контейнер объектов, которые расположены последовательно в непрерывном блоке памяти определенной вектором длины и доступны через свой порядковый индекс. Вся семантика вектора раскрывается в его интерфейсе: от длины вектора и до вставки-удаления элементов. Если вектор перемещается в функцию, функция на время своей работы начинает владеть вектором. Если вектор передается в функцию по ссылке, функция вектором не владеет, но может модифицировать его состояние. Если вектор передается по константной ссылке, функция из вектора может только читать.
При использовании типа вектора у твоего кода усиливается семантическая нагрузка и появляется детерминизм изложения кода. Буквально ты сам для себя свой же код делаешь более понятным.
Вообще всех этих моих слов не хватит даже на вступление к хорошему ответу на твой вопрос о выборе между вектором и указателем. Настолько этот вопрос является сложным в плане доказательности. Ведь и сырые указатели тоже иногда нужны, ведь прямое управление памятью тоже иногда необходимо, ведь вектор тоже может быть избыточным и обо всем этом нужно дать обоснованное разъяснение на базе терминов RFC 2119.
Если говорить совсем-уж категоричными терминами, то передавая сырые указатели и манипулируя памятью посреди своего кода ты свой код гробишь, рождая на свет дисфункционального мутанта без шанса на развитие и улучшения и обреченного только на смерть.