---
title: "ClikaRT::spec::SymBool"
sidebar_label: "SymBool"
description: "A symbolic-or-concrete boolean, the result of comparing symbolic values (e.g. a.lt(b)). Logical composition (and/or/not) is not yet available."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--class">class</span>

**Header:** `ClikaRT/compute/symbolic.h`

A symbolic-or-concrete boolean, the result of comparing symbolic values (e.g. `a.lt(b)`). Logical composition (and/or/not) is not yet available.

## Member functions

### SymBool(bool) {#SymBool}

<div class="api-signature">

**`SymBool`**(`bool` `concrete`)

</div>

A concrete boolean: no symbolic node, no heap.

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 34

</div>

### SymBool(SymBool) {#SymBool-2}

<div class="api-signature">

**`SymBool`**(`const SymBool&` `other`)

</div>

Copy: an independent value (a symbolic node, when present, is not shared).

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 36

</div>

### SymBool(SymBool) {#SymBool-3}

<div class="api-signature">

**`SymBool`**(`SymBool&&` `other`) `noexcept`

</div>

Move: takes over the symbolic node; `other` reverts to a concrete default.

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 38

</div>

### operator=(SymBool) {#operator-assign}

<div class="api-signature">

[`SymBool`](./SymBool.md)`&` **`operator=`**(`const` [`SymBool`](./SymBool.md)`&` `other`)

</div>

Copy-assign; same value semantics as the copy ctor.

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 40

</div>

### operator=(SymBool) {#operator-assign-2}

<div class="api-signature">

[`SymBool`](./SymBool.md)`&` **`operator=`**([`SymBool`](./SymBool.md)`&&` `other`) `noexcept`

</div>

Move-assign; same transfer as the move ctor.

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 42

</div>

### \~SymBool() {#SymBool-4}

<div class="api-signature">

**`~SymBool`**()

</div>

Releases the symbolic node, if any.

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 44

</div>

### is\_concrete() {#is_concrete}

<div class="api-signature">

`bool` **`is_concrete`**() `const noexcept`

</div>

True when this holds a plain bool (no symbolic node).

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 47

</div>

### concrete\_value() {#concrete_value}

<div class="api-signature">

`std::optional<bool>` **`concrete_value`**() `const`

</div>

The value iff [`is_concrete()`](./SymBool.md#is_concrete), else `nullopt`.

<div class="api-declared">

Declared in `ClikaRT/compute/symbolic.h`, line 49

</div>
