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!

Thanks,


Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, July 20, 2020 7:43 AM, Richard Hodges via Std-Proposals <std-proposals@lists.isocpp.org> wrote:



On Mon, 20 Jul 2020 at 18:03, codusnocturnus via Std-Proposals <std-proposals@lists.isocpp.org> 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@lists.isocpp.org> 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.




--
Richard Hodges
office: +442032898513
home: +376841522
mobile: +376380212



--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals


--
Richard Hodges
office: +442032898513
home: +376841522
mobile: +376380212