Skip to content

Conversation

@seffradev
Copy link
Contributor

What does this PR do?

It implements an initial C++ adapter library design.

  • Documentation for the methods and classes implemented
  • Contribution documentation
  • Mapping of existing functionality in the C library

It depends on #53.

Why is it important?

It provides idiomatic C++, utilizing RAII patterns.

Related issues

@oleg-nenashev
Copy link
Collaborator

@seffradev it would be great if you could merge it with main

@oleg-nenashev oleg-nenashev added the enhancement New feature or request label Oct 20, 2025
tc_container_terminate(request_id);
}

std::expected<void, std::string> run() {
Copy link

@SapiensAnatis SapiensAnatis Nov 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New to this repo but just thought I'd take a look at what this API may look like as I want to consume the library from C++.

Am I right in thinking the use of std::expected here in this header which a user is expected to include, means that the library is only usable from C++23 and above?

If so I think it may be worth reconsidering, many projects including my one are still on C++20 or C++17.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good suggestion! If I find the time, I could add the project zeus-cpp/expected with a compilation conditional to either use the polyfill or the standard implementation.

Another thing worth addressing is that I am currently working on an alternative library design using the builder pattern for container creation so future revisions (as this is an early draft) may change.

Thanks for your interest!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, such an polyfill backport could work.
On my own, I would have probably just used Boost:Outcome, but I am too attached to Boost from the past.

Copy link
Collaborator

@oleg-nenashev oleg-nenashev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to merge with main after I get #58 over the line.
I do not mind if we merge this experimental codebase first @seffradev . As long as it builds, having a boilerplate in the repo looks reasonable to me, the whole repo is experimental ATM


add_library(${TARGET} INTERFACE)

set(CMAKE_CXX_STANDARD 23)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FTR I am fine with doing only 23 for now, that's not a blocker

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My biggest argument against merging what we have is that I have a redesign almost done. I just have some UB to refine away.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine by me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add C++ binding library

3 participants