5 ms·
There are some nice things in there, but the destructuring looks a bit odd: struct S { int x1 : 2; volatile double y1; }; S f(); const auto [ x, y ] = f(
by zelos 9y ago
There are some nice things in there, but the destructuring looks a bit odd:
struct S { int x1 : 2; volatile double y1; };
S f();
const auto [ x, y ] = f();
So it's just ordering based, I can't pull out one member by name?
- m-ou-se 9y agoC++ already had syntax for pulling out one member by name: ;) const auto x = f().x1;
- faitswulff 9y agoI'm not sure what the wink means, but I think gp might be talking about destructuring like what you'd find in Javascript: > const {a, b} = {a: 'hey', b: 'there'} undefined > a 'hey' > b 'there'
- jcelerier 9y agoit has to work with unnamed tuples: const auto [ x, y ] = make_tuple(1, 23);
- dvlsg 9y agoTuples are ordered though. I don't usually think of structs by the order the properties are declared - I usually think of them by name. I am, admittedly, not primarily a c++ dev though. Are structs typically ordered data structures in c++?
- 21 9y agoThere is no struct here. x will be an independent variable which will take the first value from the tuple, and y the second one.
- euyyn 9y agoHis point is that it makes sense to destructure in order for tuples, but what makes sense for structs is destructuring by field name.
- jcelerier 9y ago> Tuples are ordered though. I don't usually think of structs by the order the properties are declared - I usually think of them by name. Think for instance of a 2D point structure. There are tons of implementations, all with different naming conventions ; or sometimes storing them in an array. This allows to just do : auto [x, y] = someRandomLibraryPoint();
- nly 9y ago> I don't usually think of structs by the order the properties are declared In C++ you have to, since it's guaranteed by the language that members are initialized in order of declaration (within the struct). And, like C of course, it also determines memory layout, padding and alignment > Are structs typically ordered data structures in c++ Yes, and compilers like Clang even let you inspect their memory layout
- 21 9y agoIt's yet another feature stolen from Python. Next version maybe they will even allow stuff like [x, [y, z]] = f() or [x, y, z...] = f()