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

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

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

18 ответов

20 просмотров

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

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

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

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

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

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

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

Ребят в СИ можно реализовать ООП?
Николай
33
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем доброго вечера. Разрабатываю 32 раз. приложение в Delphi. Столкнулся с тем, что стандартный  TFilestream  не работает с большим файлом > 2 ГБайт (после вызова функции see...
Vadim Gl
16
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
Кто кодит под Лазарем на винде, у вас аналогично VCL переопределяются CreateWnd и CreateParams для конкретных классов контролов и все заданные флаги влияют?
А Андрей
11
У меня задача: написать брокер сообщений. Очереди и потребители. Очереди поддерживают приоритеты. Очередь отдает сообщения, только обработчикам с соответствующими характеристи...
Aleksandr Filippov
2
народ, плиз хелп, всю голову сломал себе уже... разве может быть так, что GetProcAddress( GetModuleHandle( "kernel32.dll" ), "SetThreadDescription" ) вернёт ненулевое значение...
Iluha Companets
12
А, ты про текущую реализацию? Нет конечно, я бы сделал правильно - сейчас там гавнокод
Александр (Rouse_) Багель
6
Карта сайта