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.
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 constexprconstinitconstevalstaticinlinenoexcept(noexcept(...))requires(requires(...))explicit(explicit(...)){ body } -> decltype(body).
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)
.