TGViewer
C++ - Reddit C++ - Reddit @r_cpp · 229 subscribers
Post #24103 19
Structured binding with std::div()

I have the following code:

int indx;
...
int row = indx / 9;
int col = indx % 9;


It is attractive to substitute the following:

auto row, col = std::div(indx, 9);

However, it's not equivalent. The problem is that in the std::div_t struct that std::div() returns, the order of quot & rem members is not specified. So in my structured binding code, it is unspecified if row and col are assigned quot & rem respectively, or the other way around. In fact, my algorithm words whether I scan my array row-wise or column-wise, so I used the structured binding construct successfully. But in general, it is not usable if you care about the order of your tuple members.

The structured binding code combined with std::div() is so attractive, it's a shame you can't rely on it in general. It's desirable for C++ features to work together in expected ways. That's what they call "orthogonality".

One possible fix is to specify the order of the div_t members. This would not break correct legacy code which refers to div_t members by name. But div() inherits from c, so changing it is not so simple.

Any thoughts?

https://redd.it/1of72qx
@r_cpp
Reddit From the cpp community on Reddit Explore this post and more from the cpp community
More from @r_cpp
  1. Oct 14, 2026I tested whether a coding agent would use C++23 ranges without being told Blog post: https…
  2. Oct 14, 2026C++ futures part 1: The mental model https://devblogs.microsoft.com/oldnewthing/20261012-0…
  3. Oct 14, 2026C++ futures part 2: The mental model for std::promise, std::packaged_task https://devblogs…
  4. Oct 12, 2026[Release] slick-logger v2.2.0 — Lock-free asynchronous C++20 logging with multi-process sh…
  5. Oct 12, 2026Cheap alternative to reboot parameters (nohz, rcu, isolcpus) for stable benchmarks When no…
  6. Oct 12, 2026This C++ drama is crazy - Adobe votes no https://www.youtube.com/watch?v=DEqx_NMMH9Q https…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →