14
How can I force a copy of a C++ value? - The Old New Thing
(devblogs.microsoft.com)
The center for all discussion and news regarding C++.
If you look at it... The answer is actually to invoke the copy constructor. They're just complaining that, that can be unwieldy, then going on to say ... "actually if you're using C++17 this is all really easy just say auto(x) instead of writing your own copy constructor!"
It's a lot of words (IMO) without that much substance.
The macro would be unnecessary complexity vs their pre-C++17 compatible copy function FWIW.
The other alternative here which is why I think this is kind of ridiculous is 9/10 you can just change the function you're calling to pass a copy rather than passing a reference if that's what you really want.
...That's a pretty good point. Use the type system to work for you. If you want a value thing, just get it by-value. No need for macros, no need for wildcard ampersands, no need for
constexpr constinit consteval static inline noexcept(noexcept(...)) requires(requires(...)) explicit(explicit(...)) { body } -> decltype(body).