Size: a a a

2021 February 23

D

Dmitriy in pro.cxx
Antony Polukhin
Вы не можете перекидываться указателями через общую память, вам нужны смещения относительно начала шареного сегмента до объекта лежащего в этом сегоменте. См https://www.boost.org/doc/libs/1_75_0/doc/html/interprocess/offset_ptr.html или рецепт "Использование указателей в общей памяти" из одной русской книги по Boost
Спасибо. Чуть ниже я уточнил, что речь шла о ядре, так что проблема различных адресных пространств не стоит)
источник

ИI

И Ivan in pro.cxx
Ofee
Результат не constexpr функции не засунуть в качестве шаблонного аргумента

Но вообще, согласен, сейчас зима – полезно погреть комнату пользователя, а шаблоны тут не не нужны – мы пишем только оригинальный код
А где это действительно нужно? Где шаблоны настолько сложные, что нужно вычимление sin в compile time?
источник

AP

Antony Polukhin in pro.cxx
Моё любимое : constexpr to_chars и from_chars
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2291r0.pdf
источник

AP

Antony Polukhin in pro.cxx
Alexander Zaitsev
О, давно не было нового синтаксиса в языке :)
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2320r0.pdf
Да блин, опять...

Вот встретят люди в коде конструкцию auto f = ˆint, и как в поисковике её искать?

"C++ xor int"
"C++ hat int"
источник

И

Илья in pro.cxx
C++ int* int"
источник

АК

Александр Караев... in pro.cxx
И Ivan
А в чем вообще смысл constecpr функций? Мне кажется, у него только одно направление - потешить себя. А вычислить что-то до начала выполнения программы можно и  в runtime, это и гибче (данные можно хоть из файла считать) и понятнее
constexpr ради оптимизации - это 1% его реального применения. constexpr нужен ради полноценного взаимодействия с типами во время компиляции. Рантайм оперирует значениями, компайл-тайм - в основном типами. И чем больше функций доступно во время компиляции, тем проще метапрограммирование
источник

АК

Александр Караев... in pro.cxx
Antony Polukhin
Моё любимое : constexpr to_chars и from_chars
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2291r0.pdf
Какое совпадение, и моё :)
источник

AP

Antony Polukhin in pro.cxx
Побитый Кирпич
Это не просто интерфейс переделать надо будет, а всю семантику класса для этого
Тогда возвращайте ссылку :)

Из сигнатуры функции foo* bar(); не ясно
1) кто владаеет ресурсами
2) возможен ли nullptr
источник

AP

Antony Polukhin in pro.cxx
И Ivan
А в чем вообще смысл constecpr функций? Мне кажется, у него только одно направление - потешить себя. А вычислить что-то до начала выполнения программы можно и  в runtime, это и гибче (данные можно хоть из файла считать) и понятнее
Для дигностики и рефлексии как минимум.

Вот например, пишете вы библиотеку для работы с Postgresql. Пользователи задают запрос, передают аргументы:
auto res = connection.Execute("SELECT a,b FROM table WHERE a < $1 AND b > $2", 1, 2, 3);

С помощью constexpr и consteval функций можно выдать нормальный static_assert с сообщением что передано больше агрументов чем нужно
источник

AS

Anatoly Shirokov in pro.cxx
Antony Polukhin
Для дигностики и рефлексии как минимум.

Вот например, пишете вы библиотеку для работы с Postgresql. Пользователи задают запрос, передают аргументы:
auto res = connection.Execute("SELECT a,b FROM table WHERE a < $1 AND b > $2", 1, 2, 3);

С помощью constexpr и consteval функций можно выдать нормальный static_assert с сообщением что передано больше агрументов чем нужно
Оффтоп: Встроенный SQL - антипаттерн. RPC и кодогенерация по формальному описанию сигнатуры спасет мир :)
источник

AS

Anatoly Shirokov in pro.cxx
В противном случае это рано или поздно расползется
источник

AP

Antony Polukhin in pro.cxx
Dmitriy
Спасибо. Чуть ниже я уточнил, что речь шла о ядре, так что проблема различных адресных пространств не стоит)
Упс, только сейчас заметил.

Стандарт C++ старатесльно избегает тем динамических библиотек и процессов соседей. Так что тут вы сами по себе (
источник

AP

Antony Polukhin in pro.cxx
Anatoly Shirokov
Оффтоп: Встроенный SQL - антипаттерн. RPC и кодогенерация по формальному описанию сигнатуры спасет мир :)
А есть хорошие готовые решения для кодогенерации для SQL?
источник

AS

Anatoly Shirokov in pro.cxx
Antony Polukhin
А есть хорошие готовые решения для кодогенерации для SQL?
Я не изучал эту тему, у нас (ынтырпрайз лютый) серверные братья описываю все сигнатуры в xml, мы при сборке  через xslt кодогенерим. Как результат, полный контроль над типом и числом аргументов. Если в сигнатуру добавили обязательный параметр - ломается билд
источник

AS

Anatoly Shirokov in pro.cxx
У нас этот подход лет 16 уже. Оправдал себя полностью.
источник

AS

Alex Sandrov in pro.cxx
Antony Polukhin
А есть хорошие готовые решения для кодогенерации для SQL?
Это типа hibernate для явы?
источник

AS

Alex Sandrov in pro.cxx
Anatoly Shirokov
Я не изучал эту тему, у нас (ынтырпрайз лютый) серверные братья описываю все сигнатуры в xml, мы при сборке  через xslt кодогенерим. Как результат, полный контроль над типом и числом аргументов. Если в сигнатуру добавили обязательный параметр - ломается билд
У нас серверные братья пишут сохранёнки, и мы работаем через них, максимально насколько можно
источник

AS

Anatoly Shirokov in pro.cxx
Alex Sandrov
У нас серверные братья пишут сохранёнки, и мы работаем через них, максимально насколько можно
У нас тоже, но сигнатуры хранимок генерятся из описания, а описание используется и сервером и клиентом.
источник

AS

Alex Sandrov in pro.cxx
Anatoly Shirokov
У нас тоже, но сигнатуры хранимок генерятся из описания, а описание используется и сервером и клиентом.
А как вы формализуете параметры для сохранёнок? Ну, чтобы генератор их понимал в xml и генерил код? Что-то своё у вас?
источник

AS

Anatoly Shirokov in pro.cxx
Alex Sandrov
А как вы формализуете параметры для сохранёнок? Ну, чтобы генератор их понимал в xml и генерил код? Что-то своё у вас?
Описание доменов и библиотека поддержки на клиенте
источник