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

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

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

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

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

14 ответов

10 просмотров

Упомянутая бумага принята в 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 похоронили задолго до этой бумаги

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта