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

Еще такой вопрос : можно аргументам функции сразу обозначить их

дефолтные значения.

1. Как сделать такое?

void point(int x = 3, int y = 4);
point(1, 2); // calls point(1, 2)
point(1); // calls point(1, 4)
point(??, ??); // calls point(default x = 3, non-default y = 1337)

2. Зачем нужны приколы по типу void g(int, int = 7); ?
"Передай пж два инта, они нам нафиг не сдались, но все равно передай"?

13 ответов

4 просмотра

1-е. нет. 2-е. в объявлении названия может и не нужны, нужны в реализации

Max-A Автор вопроса
Макс Воробьев
1-е. нет. 2-е. в объявлении названия может и не ну...

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

Max A
так мы в реализации не можем обратиться что к перв...

Где? Нет никакой реализации - раздельная компиляция это костыли. В цпп имена опциональные, потому как тип важнее имени.

что здесь в первом написано - неведомо мне. Ты хочешь скипнуть первый аргумент? Выше уже ответили - нет. Это какая-то дыра в дизайне

Написал пример, авось непонятно будет - https://godbolt.org/z/PMhKz66rT Там можешь ещё спросить у пацанов на тему стандарта - вроде как была какая-то история на эту тему. Мне без разницы, но авось тебе нет.

Roman R.
Написал пример, авось непонятно будет - https://go...

как по мне, это только частично решает проблему.

короче: в примитивных вариантах проще перечислить все параметры руками

Макс Воробьев
короче: в примитивных вариантах проще перечислить ...

Куда проще, кому проще? Никому не проще. Это уж не говоря о какой-то длинной/не очевидно инициализации. В любом случае именованные параметры нужны тогда, когда а) их много, б) есть, как уже было выше сказано, сложная инициализация. И множеству других назначений. Копипаста/перечисление решением не является. Единственный вариант на текущий момент получить поведение +/- близкое к именованным параметрам - это описанный выше паттерн. Он вполне себе адекватно работает. Ну и даёт, так же, некоторые преимуществу. То, что там нужно писать дополнительный агрегат? Это не особо проблема - оно +/- компенсирует друг друга. Скорее там больше проблемой можно назвать придумывание имён, потерю выразительности при перегрузки.

Лямбда функции

auto point(int x = 3) { return [=](int y = 4) -> void { // do something }

@BigRedEye как-то кидал такой пример https://godbolt.org/z/DP8Yxf

Till Schneider
@BigRedEye как-то кидал такой пример https://godbo...

эх ещё бы определение foo выглядело попроще

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

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

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