import std;
import mcpplibs.primitives;
using namespace mcpplibs::primitives;
using namespace mcpplibs::primitives::operators;
int main() {
using value_t =
primitive<int, policy::value::checked, policy::error::expected>;
auto const out = value_t{40} + value_t{2};
if (!out.has_value()) {
return 1;
}
return out->value() == 42 ? 0 : 1;
}Key point: arithmetic and operator APIs typically return std::expected<...>.
Recommended starting combination:
policy::value::checkedpolicy::error::expected- default
type::strict - default
concurrency::none
This gives safe arithmetic and explicit error handling without requiring exceptions.
Run examples in this order:
ex01_basic_usageex02_type_policyex03_value_policyex04_error_policyex05_concurrency_policyex06_conversionex07_algorithmsex08_custom_underlyingex09_custom_policyex10_custom_operation
Command:
xmake run ex03_value_policyusing default_i32 = mcpplibs::primitives::primitive<int>;using value_t = mcpplibs::primitives::primitive<
int,
mcpplibs::primitives::policy::type::compatible,
mcpplibs::primitives::policy::error::expected>;
auto const lhs = value_t{40};
short const rhs = 2;
auto const out = mcpplibs::primitives::operations::add(lhs, rhs);using namespace mcpplibs::primitives::operators;Without this namespace, call function APIs via mcpplibs::primitives::operations.
- Concurrency usage: ./concurrency.md
- Extension guide: ./extension.md
- API reference: ../../api/en/README.md