Передача переменных в функцию по имени аргумента

mixtapex
mixtapex

В shell-языках типа Python, а так же в JS и т.д. есть способ передавать значение переменной в функцию по названию аргумента.

А именно:

function('from' = 0, 'to' = 100, 'vector' = vector);

 

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

 

П.С.: Некоторое время назад, если я ничего не путаю, то это обсуждалось в сообществе.

2
рейтинг
7 комментариев
Игорь
Если и делать, то предлагаю как в шарпах:
foo(id: 1, name: "some")

Делать через знак равно не получится, такие идеи уже были.
Игорь
Игорь
И ординарные кавычки выделены в с++ исключительно под char тип. Их трогать нельзя.
Игорь
Игорь
+ подобная инициализация есть в gcc, унаследовавший синтаксис с11, только для структур и только в правильном порядке.
Игорь
mixtapex
rumyancev95, Да, со знаком равно и кавычками - немного переборщил. Просто это был пример. Посмотрел в gcc. Там действительно это уже есть для структур.
mixtapex
mixtapex
Я нашел этот Proposal. Это N4172.
Он имеет NAD статус. Так что, вероятно, это не будет.
mixtapex
languagelawyer

Я тоже нашёл пропозал. Это N0060.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1991/WG21%201991/X3J16_91-0127%20WG21_N0060.pdf

languagelawyer
yuri.pechatnov

В С++20 будут designated initializers. То есть можно будет просто сделать именованные аргументы, передавая вообще все аргументы через структуру.

А как аргументы функций сделать именованными не очень понятно, если сейчас в разных объявлениях функций (в декларациях, в перегрузках) названия аргументов могут быть разными.

yuri.pechatnov
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения