Size: a a a

2020 September 16

LY

Leonid Yuriev in pro.cxx
Stanislav Ershov
если уж есть поддержка С++20 почему бы эту муть
  friend inline bool operator==(const slice &a, const slice &b) noexcept;
 friend inline bool operator<(const slice &a, const slice &b) noexcept;
 friend inline bool operator>(const slice &a, const slice &b) noexcept;
 friend inline bool operator<=(const slice &a, const slice &b) noexcept;
 friend inline bool operator>=(const slice &a, const slice &b) noexcept;
 friend inline bool operator!=(const slice &a, const slice &b) noexcept;
не передалать под <=>
остальные С++ {/push {[тотальная]объективность}} включая варианты MSVC не тонут.
источник

SE

Stanislav Ershov in pro.cxx
Leonid Yuriev
остальные С++ {/push {[тотальная]объективность}} включая варианты MSVC не тонут.
шо?
источник

LY

Leonid Yuriev in pro.cxx
/push
источник

LY

Leonid Yuriev in pro.cxx
pop?
ну или  в личку
источник

LY

Leonid Yuriev in pro.cxx
Stanislav Ershov
если уж есть поддержка С++20 почему бы эту муть
  friend inline bool operator==(const slice &a, const slice &b) noexcept;
 friend inline bool operator<(const slice &a, const slice &b) noexcept;
 friend inline bool operator>(const slice &a, const slice &b) noexcept;
 friend inline bool operator<=(const slice &a, const slice &b) noexcept;
 friend inline bool operator>=(const slice &a, const slice &b) noexcept;
 friend inline bool operator!=(const slice &a, const slice &b) noexcept;
не передалать под <=>
ну как-бы да...

но нужна совместимость с msvc-2015.
Описывать каждый поклон в комментариях?
источник

SE

Stanislav Ershov in pro.cxx
Leonid Yuriev
ну как-бы да...

но нужна совместимость с msvc-2015.
Описывать каждый поклон в комментариях?
ну уж если такая гора дефайнов есть можно и добавить еще парочку
источник

LY

Leonid Yuriev in pro.cxx
Stanislav Ershov
ну уж если такая гора дефайнов есть можно и добавить еще парочку
И зачем?

Возможно, мысль не понял, но спасибо (и спать!!).
источник

P

PRoSToC0der in pro.cxx
@WeekendDriver там проблема в том, что у итераторов нет какого-нибудь size_type, который можно было бы использовать для count/count_if, поэтому используется difference_type... А использование size_t может "сломаться" на 32-битной системе для итераторов какого-нибудь std::vector<bool>.
https://stackoverflow.com/a/7505549
источник

P

PRoSToC0der in pro.cxx
интересно можно ли протащить в стандарт size_type для итераторов с обратной совместимостью на difference_type при его отсутствии
источник

SE

Stanislav Ershov in pro.cxx
PRoSToC0der
интересно можно ли протащить в стандарт size_type для итераторов с обратной совместимостью на difference_type при его отсутствии
и что это починит?
источник

АК

Александр Караев... in pro.cxx
Как можно нормально делать композицию концептов?
Допустим, необходимо написать концепт, который проверяет, что все типы внутри std::tuple удовлетворяют другому концепту. То есть нужно что-то вроде

template <class Tuple, ??? Concept>
concept all_of = ...

с последующим использованием all_of<std::tuple<int, long>, std::integral>.

Вопрос НЕ в реализации all_of, а в том, что должно быть вместо знаков вопроса? Или как это реализовать иначе? Очевидно, что я не хочу писать отдельные all_of_integral, all_of_blabla и т.д.
источник

m

magras in pro.cxx
PRoSToC0der
@WeekendDriver там проблема в том, что у итераторов нет какого-нибудь size_type, который можно было бы использовать для count/count_if, поэтому используется difference_type... А использование size_t может "сломаться" на 32-битной системе для итераторов какого-нибудь std::vector<bool>.
https://stackoverflow.com/a/7505549
Не сломается. У контейнеров есть метод max_size(). std::vector<bool>::max_size() не должен возвращать значение больше numeric_limits<difference_type>::max() (возможно еще нужно проверить отрицательное значение).
источник

DS

Dmitry Sokolov in pro.cxx
Побитый Кирпич
Ну вот один запрос это не функция, скорее что то абстрактное. А раз так, то можно как-нибудь прокинуть ID запроса в аллокатор (у каждого запроса свой аллокатор), и смотреть потом группировку по ID
Создать под запрос memory resource который будет прокидывать всё в default memory resource, по пути считать суммарное/пиковое потребление. И в контексте запроса работать только с pmr контейнерами, при окончании обработки пушнуть значения счётчиков в метрику.
источник

DS

Dmitry Sokolov in pro.cxx
Leonid Yuriev
Потому-что в прикладухе мне нужен strict no-aliasing от char8_t из C++20 и там еще что-то отваливалось (не фатально, но неудобно).
Но в целом, наверное, мне стоит подумать о enum class byte : char8_t {}  для C++20.
Ща поковыряюсь...
Можно просто enum class byte : char {}, aliasing rules не наследуются в enum.
источник

IZ

Ilia Zviagin in pro.cxx
N 2
Поинтер в плюсах в бул кастится или нет?
Да
источник

LY

Leonid Yuriev in pro.cxx
Dmitry Sokolov
Можно просто enum class byte : char {}, aliasing rules не наследуются в enum.
Ну я пока не увидел причин что-то менять.

Вместе с тем удручает UB-мания дизайнеров современного C++.
Вроде-бы собирались сделать  некий char без алиасинга, но без других ограничений. Потом прилепили туда utf8 и обложили всё вокруг UB.

В итоге либо пользовать старый char (операции с которым нельзя полностью оптимизировать), либо обниматься с UB декларироваными для char 8_t.
источник

ПК

Побитый Кирпич... in pro.cxx
Какой то бот походу на нейросети)
источник

DS

Dmitry Sokolov in pro.cxx
Leonid Yuriev
Ну я пока не увидел причин что-то менять.

Вместе с тем удручает UB-мания дизайнеров современного C++.
Вроде-бы собирались сделать  некий char без алиасинга, но без других ограничений. Потом прилепили туда utf8 и обложили всё вокруг UB.

В итоге либо пользовать старый char (операции с которым нельзя полностью оптимизировать), либо обниматься с UB декларироваными для char 8_t.
Я к тому что добиться для байтов no-aliasing можно и с C++11, без char8_t.
источник
2020 September 17

P

PRoSToC0der in pro.cxx
Stanislav Ershov
и что это починит?
возвращаемый тип у std::count/std::count_if
источник

P

PRoSToC0der in pro.cxx
magras
Не сломается. У контейнеров есть метод max_size(). std::vector<bool>::max_size() не должен возвращать значение больше numeric_limits<difference_type>::max() (возможно еще нужно проверить отрицательное значение).
difference_type вполне может оказаться std::int_least64_t, а size_type может быть std::uint_least64_t, так что теоретически сломаться может
источник