C++ Logo


Advanced search

Re: Proposal: template function solution to Pythonic optional function arguments

From: codusnocturnus <codusnocturnus_at_[hidden]>
Date: Mon, 20 Jul 2020 18:23:02 +0000
Having the code-bloat associated with defining and naming a struct, as well as pulling in std::optional all over the place to get the equivalent of named parameters is objectively terrible (I think you even questioned the viability), and, subjectively, it looks awful at the call site, too.

It's one thing to jump through hoops on the called side of an API, but forcing the calling side into contrived patterns to achieve what is commonly available in modern languages just seems rude.

Straight-up named parameter calling (not looking for any variadic nonsense à la *args/**kwargs) would make function overloading and default parameters as useable in C++ as they were intended to be. These are features that distinguish C++ from C, but today (on this very thread) we have notable language experts actively campaigning against their use!


Sent with [ProtonMail](https://protonmail.com) Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, July 20, 2020 7:43 AM, Richard Hodges via Std-Proposals <std-proposals_at_[hidden]> wrote:

> On Mon, 20 Jul 2020 at 18:03, codusnocturnus via Std-Proposals <std-proposals_at_[hidden]> wrote:
>> This would be great - just remove the braces, and the .’s, and the struct.
> At this point it becomes an argument over syntax, rather than functional outcomes.
> I think what the designated initialiser demo shows is that the language is capable of accommodating this idea.
> I suspect the bigger argument will be over whether it should, given the additional overhead of passing carrying unnecessary optionals into a function whether it needs them or not.
> I think it's common to think, "language X has a nice way of expressing Y - why don't we do that too?"
> I can be guilty of that just like anyone else.
> But in the end, if a language gives you a way to express intent, one might wonder whether it's worth expending effort in making syntax nicer for niche use cases in favour of providing more utility or fixing design bugs.
>> Sent from ProtonMail Mobile
>> On Mon, Jul 20, 2020 at 2:10 AM, Richard Hodges via Std-Proposals <std-proposals_at_[hidden]> wrote:
>>>> Its possible something like this already exists in the latest versions of C++ but if so I am not aware of it
>>> As of C++20, one could use designated initialisers to achieve this.
>>> Whether it's a good idea in C++ is another matter.
>>> https://godbolt.org/z/cd8szq
>>> --
>>> Richard Hodges
>>> hodges.r_at_[hidden]
>>> office: +442032898513
>>> home: +376841522
>>> mobile: +376380212
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
> --
> Richard Hodges
> hodges.r_at_[hidden]
> office: +442032898513
> home: +376841522
> mobile: +376380212

Received on 2020-07-20 13:26:33