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.