this post was submitted on 17 Mar 2024
14 points (93.8% liked)
C++
1778 readers
1 users here now
The center for all discussion and news regarding C++.
Rules
- Respect instance rules.
- Don't be a jerk.
- Please keep all posts related to C++.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
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)
.