170 похожих чатов

@Antoshkka, есть ли какая-то информация о статусе пропозала constexpr-параметров (https://www.youtube.com/watch?v=bIc5ZxFL198)

? Попадет ли это в С++26 стандарт? Это наверная самая большая фича которая полностью поменяет метопрограммирование в С++ и уберет необходимость в библиотеках вроде Boost.Hana

18 ответов

23 просмотра

Как по мне, для метапрограммирования самым большим изменением послужит рефлексия

Нет, в таком виде не попадёт. Она что-то фундаментальное ломает в устройстве компиляторов

🐙 Antony Polukhin
Нет, в таком виде не попадёт. Она что-то фундамент...

да там не только в компиляторах же ломается invoke_result сломается

Богдан- Автор вопроса
🐙 Antony Polukhin
Нет, в таком виде не попадёт. Она что-то фундамент...

А можно подробнее? Что за проблема и где про нее можно почитать? Этот пропозал уже где-то обсуждался?

Богдан
А можно подробнее? Что за проблема и где про нее м...

Обсуждали. Проблема в том что foo(constexpr 42) эквивалентна по смыслу foo<42>(), однако из foo(42) компилятору это сложно понять. В итоге приходится сильно менять имплементацию, ощутимо замедляется время компиляции и потребление памяти Поэтому non type template parameters, вместо constexpr параметров

🐙 Antony Polukhin
Обсуждали. Проблема в том что foo(constexpr 42) эк...

может просто тип тег ввести для таких параметров?

disba1ancer
nttp?

https://stackoverflow.com/questions/59422612/structural-types-as-nttp-why-must-all-members-be-public

🐙 Antony Polukhin
Обсуждали. Проблема в том что foo(constexpr 42) эк...

из одного foo(42) это действительно сложно понять, ведь foo может быть именем типа и тогда это вообще не вызов функции поэтому компилятор использовал бы знание о том как foo декларирован и увидел бы там, что 1й параметр помечен constexpr также как сейчас в foo<42>() он использует это, чтобы понять, что <42> это параметры шаблона, а не "оператор меньше, 42, оператор больше"

disba1ancer
а в конструкторах что делать?

по новому типу на параметр

🐙 Antony Polukhin
Так nttp же проще, и тег городить не надо

последний раз я нечто подобное делал через тег с конструктором, получилось как-то так: Foo bar; FunctionPtr<void()> f(bar, FnTag<&Foo::Buz>);

Гражданин Котейко
из одного foo(42) это действительно сложно понять,...

Там чуть по иному. У компилятора типы не инт, буул, т п, а инт::0 инт::1 инт::-unknown- и так со всеми типами Так вот - чтобы оперировать новым типом инт::42 его нужно "завести в систему", а это делается внутри скобок template<°°°>

Int Unsigned
Там чуть по иному. У компилятора типы не инт, буул...

поэтому через constexpr параметр "эквивалентный по смыслу шаблонному" оно вдруг существенно сложнее вводится чем через NTTP даже если их прям реально внутри через те же механизмы, что и NTTP проводить? всё ещё не понятно в чём проблема

Гражданин Котейко
поэтому через constexpr параметр "эквивалентный по...

Новые синтаксические конструкции намного легче, и даже единственно безопасно, вводить в новых конструкциях языка Легаси..с.. Поэтому если и введут, то скажем в лямбдах. Там точно код win3.11 не поломается.

Int Unsigned
Новые синтаксические конструкции намного легче, и ...

ну т.е. если условно сказать "это работает только в функциях с trailing return type syntax" то вдруг пуф и проблем в реализации нет, потребление памяти время компиляции вернулось к ожидаемым показаниям?

Гражданин Котейко
ну т.е. если условно сказать "это работает только ...

Откровенно не понимаю почему говорится о времени компиляции. На взгляд с моей маленькой кочки зрения большая проблема доказать, что то что в новом режиме компилятор вывел эквивалентно коду, который он раньше емитил.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта