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

Может быть закроем тему UB? Мне вчерашнего холивара хватило. Давайте я

вам пару любопытных вещей из секции посвященной декларации покажу:

1) На сколько я могу судить код
int f(), g();
абсолютно корректен и объявляет две функции возвращающие int.

2) В драфте стандарта уже есть возможность передавать this явно. Кажется это предлагали для того чтобы иметь возможность не дублировать код в методах у которых должны быть почти одинаковые реализации const и non-const, но я не следил за судьбой этого пейпера.

14 ответов

33 просмотра

Упомянутая бумага принята в C++23, сама по себе, она позволяет намного больше, чем просто избавление от дублирования – и рекурсивные лямбды, и продвинутое CRTP, и более эффективная передача this по значению для маленьких объектов, адрес от таких методов представляет из себя обычный указатель на функцию, с чем обычно удобнее работать, чем с указателем на метод

А по поводу первого – можно ведь пойти и дальше: using f = int(); f a, b, c;

Для пустых объектов это совершенно бесполезно. Разница будет только в случае, когда в методе доступ к полям, и они помещаются в регистр

Вообще, это звучит как слом ABI

Dmitriy [Отпуск]
Вообще, это звучит как слом ABI

какой слом то, это ж не на старую реализацию повлияет, а на новый код

Dmitriy [Отпуск]
Для пустых объектов это совершенно бесполезно. Раз...

Автор бумаги предлагает рассмотреть пример string_view – обычно лучшей практикой является приём по значению, но это невозможно в случае с методами

Dmitriy [Отпуск]
Вообще, это звучит как слом ABI

Дело в том, что эти методы – скорее функции, чем методы. А принимать аргументы по значению в функции мы уже умеем

Автору надо предложить с VC++ ABI ознакомиться)

Dmitriy [Отпуск]
Автору надо предложить с VC++ ABI ознакомиться)

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

vile
Как там у vc с лупхолами?

У большой тройки компиляторов лупхолы работают начиная с C++11. Только ICC не может в type mapping в C++11. Правда, совершенно непонятно, к чему этот вопрос

magras- Автор вопроса

Мне грустно что принятие этого костыля косвенно говорит о том что uniform call syntax похоронили. По сути это специальный синтаксис для friend function, которая вызывается через синтаксис вызова метода. По моему мнению это одно из самых костыльных решений.

magras
Мне грустно что принятие этого костыля косвенно го...

Полагаю, uniform call 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
Карта сайта