20
submitted 2 years ago by [email protected] to c/[email protected]
you are viewing a single comment's thread
view the rest of the comments
[-] [email protected] 4 points 2 years ago* (last edited 2 years ago)

I tried coming up with a decent Result type and Try macro in C++ and got nowhere. To be usable I need something like this:

auto varname = Try(expression);

Where the Try expression will either return the error type immediately or evaluate to the success type.

As far as I can tell there's no portable way to implement that macro in C++20, and nothing coming down the pipe either. I don't think chaining lambdas is good enough. It can make the code uglier than just manually checking returns.

I'll be happy if anyone can correct me though. The best I managed was still pretty gross:

TryBind(varname, expression);

Works, but it just looks like a bad DSL at that point.

[-] [email protected] 2 points 2 years ago

BOOST_OUTCOME_TRYX may be what you're looking for. It's only available on gcc and clang though.

[-] [email protected] 3 points 2 years ago

Yeah, I came across that. I presume it just uses the GCC statement expressions extension under the hood.

No can do though, it has to work with MSVC too.

this post was submitted on 11 Nov 2023
20 points (88.5% liked)

C++

2052 readers
1 users here now

The center for all discussion and news regarding C++.

Rules

founded 2 years ago
MODERATORS