Skip to content

Latest commit

 

History

History
92 lines (65 loc) · 1.85 KB

File metadata and controls

92 lines (65 loc) · 1.85 KB

Quick Start

Minimal Program

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<...>.

First Policy Setup

Recommended starting combination:

  • policy::value::checked
  • policy::error::expected
  • default type::strict
  • default concurrency::none

This gives safe arithmetic and explicit error handling without requiring exceptions.

Learn by Examples

Run examples in this order:

  1. ex01_basic_usage
  2. ex02_type_policy
  3. ex03_value_policy
  4. ex04_error_policy
  5. ex05_concurrency_policy
  6. ex06_conversion
  7. ex07_algorithms
  8. ex08_custom_underlying
  9. ex09_custom_policy
  10. ex10_custom_operation

Command:

xmake run ex03_value_policy

Common Usage Snippets

Default primitive

using default_i32 = mcpplibs::primitives::primitive<int>;

Mixed primitive/underlying operation

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);

Operators namespace

using namespace mcpplibs::primitives::operators;

Without this namespace, call function APIs via mcpplibs::primitives::operations.

Next