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

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

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

18 ответов

8 просмотров

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

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

🐙 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 же проще, и тег городить не надо

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" то вдруг пуф и проблем в реализации нет, потребление памяти время компиляции вернулось к ожидаемым показаниям?

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

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

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
.
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
.
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта