C++17: Keep only some members when tuple unpacking
Solution 1:
Another alternative is to use an std::tie
:
int b, c;
std::tie(std::ignore, b, c) = foo();
Edit
As mentioned in the comments, there are some issues with this approach:
- No type inference possible
- The objects must be constructed before, so unless the default constructors are trivial, it's not a good alternative.
Solution 2:
Unfortunately structured bindings do not explicitly support discarding members, and attributes such as [[maybe_unused]]
cannot be applied to structured bindings (there's a proposal for that: P0609: "Attributes for Structured Bindings").
Here's a possible solution:
auto [a, b, c] = foo();
(void) a; // unused