Ключевое слово "потенциально". Просто мазать constexpr везде смысла мало. Современный С++ даёт возможность специализировать поведение программы для разных данных через метапрограммирование и constexpr как его часть. Но для этого нужно писать соответсвующий код. Мы рассуждаем в контексте других языков, где таких возможностей попросту нет. Значит сравнивать надо с С++ кодом в котором так же эти возможности не задёствуются, и лишние кейворды вроде constexpr/noexcept не возникают.
Отличная задумка, но не хватает нескольких базовых вещей: оператора or, метода flatten для преобразования optional<optional> в optional>, да даже банальный transform появился только в C++23.
Я думаю они в с++ не нужны. Подход с++ это if и early return. Другой подход имеет смысл только вместе с другими боле базовыми фичами языка
Смех в том что приниятие какого pXXX зачастую нетребует изменений в реализации компилятора. Т.е. оно как работало так и работает, просто у стандартизаторов дошли руки это описать.
Любой компилятор даст варнинг на код мозиллы, так что этот пример как аргумент не зачитываю. Во всех ваших примерах понятно что хотели написать, это в коде написано.
killAllHumans() // не понятно возможно хотели loveAllHumans()
loveAllHumansWithMyHartIRellyMeanIt() // вот так лучше
Надо писать
const auto&
и не думатьЛибо вы уже ушли, и вам пофиг что он там сделал, либо у вас не работает код ревью.
Если с# закрывает ваши задачи то хорошо, не стоит брать с++. Высокоуровневые языки это размен контроля на простоту.
Ключевое слово "потенциально". Просто мазать constexpr везде смысла мало. Современный С++ даёт возможность специализировать поведение программы для разных данных через метапрограммирование и constexpr как его часть. Но для этого нужно писать соответсвующий код. Мы рассуждаем в контексте других языков, где таких возможностей попросту нет. Значит сравнивать надо с С++ кодом в котором так же эти возможности не задёствуются, и лишние кейворды вроде constexpr/noexcept не возникают.
Если вы не знаете что делает constexpr то следует ознакомится с документацией прежде чем писать чушь в комментариях. Заодно узнаете про consteval.
const propagation оптимизация работает и в си без всяких constexpr
Сочувствую вашей травме
Массив это пара (T*, size_t)
Это никак не относится к задачи
Нет. Я хочу работать рид-онли с разными структурами данных, а не только с байтами.
В этом и сила с++, что можно написать лучше. В с# жрешь то говно что дали.
Раскажите как nodiscard, constexpr и traling return влияют на производительность?
Я думаю они в с++ не нужны. Подход с++ это if и early return. Другой подход имеет смысл только вместе с другими боле базовыми фичами языка
Смех в том что приниятие какого pXXX зачастую нетребует изменений в реализации компилятора. Т.е. оно как работало так и работает, просто у стандартизаторов дошли руки это описать.
почему?
Прочитал первою строку:
std::reinterpreprepret_cast<T>( )
демонстрирует полное незнание темы. Дальше время тратить на чтение мнения эксперта не стал.Не надо просто все хранить в интах. Если это резалт то у него обязан быть operator bool
А зачем нужен int* ? для
int p
как раз if (*p) не компилируется.По хорошему не должно быть чтобы и p и *p имели такую семантику. Это означает что у вас в коде есть что то вроде
optional<optional<T>> p
Любой компилятор даст варнинг на код мозиллы, так что этот пример как аргумент не зачитываю. Во всех ваших примерах понятно что хотели написать, это в коде написано.
Все равно йода
насколько я помню clang даёт.