C++26: Structured Bindings in Conditions

(sandordargo.com)

22 points | by jandeboevrie 3 days ago ago

4 comments

  • Panzerschrek 3 days ago ago

    > if (const auto& [is_successful, error_message] = foo(n))

    I don't like it. It's hard to reason what exactly serves as condition variable.

    • daemin 3 days ago ago

      Should probably make it explicit in this case, something like: if (const auto& [is_successful, error_message] = foo(n); is_successful)

      In a more normal scenario you'd expect to use std::expected here rather than a custom struct with an operator bool.

    • addaon 3 days ago ago

      The return value of foo(n), converted to bool, acts as the condition variable…

    • porise 2 days ago ago

      Yeah I wouldn't like this in a code review. Add one more line of code so I don't have to investigate foo().

      That's my fundamental gripe with C++

      int i = 0;

      function_0(i,...);

      ...

      function_9(i,...);

      which one changes i? It's not obvious in a code review due to default mutable references.