mirror of
https://github.com/Z3Prover/z3
synced 2026-01-21 17:44:43 +00:00
* Initial plan * Replace optional with std::optional in source files Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com> * Fix array_map contains() and remove optional_benchmark test Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com> * Address code review feedback - simplify array_map and test Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
74 lines
1.3 KiB
C++
74 lines
1.3 KiB
C++
/*++
|
|
Copyright (c) 2006 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
tst_optional.cpp
|
|
|
|
Abstract:
|
|
|
|
Test optional module
|
|
|
|
Author:
|
|
|
|
Leonardo de Moura (leonardo) 2006-09-29.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#include "util/trace.h"
|
|
#include "util/debug.h"
|
|
#include "util/memory_manager.h"
|
|
#include <optional>
|
|
|
|
static void tst1() {
|
|
std::optional<int> v;
|
|
ENSURE(!v.has_value());
|
|
v = 10;
|
|
ENSURE(v);
|
|
ENSURE(*v == 10);
|
|
TRACE(optional, tout << sizeof(v) << "\n";);
|
|
}
|
|
|
|
struct OptFoo {
|
|
int m_x;
|
|
int m_y;
|
|
|
|
OptFoo(int x, int y):m_x(x), m_y(y) {
|
|
TRACE(optional, tout << "OptFoo created: " << m_x << " : " << m_y << "\n";);
|
|
}
|
|
|
|
~OptFoo() {
|
|
TRACE(optional, tout << "OptFoo deleted: " << m_x << " : " << m_y << "\n";);
|
|
}
|
|
};
|
|
|
|
static void tst2() {
|
|
std::optional<OptFoo> v;
|
|
ENSURE(!v);
|
|
v = OptFoo(10, 20);
|
|
ENSURE(v->m_x == 10);
|
|
ENSURE(v->m_y == 20);
|
|
v = OptFoo(200, 300);
|
|
ENSURE(v->m_x == 200);
|
|
ENSURE(v->m_y == 300);
|
|
TRACE(optional, tout << sizeof(v) << "\n";);
|
|
}
|
|
|
|
static void tst3() {
|
|
std::optional<int *> v;
|
|
ENSURE(!v);
|
|
int x = 10;
|
|
v = &x;
|
|
ENSURE(v);
|
|
ENSURE(*v == &x);
|
|
TRACE(optional, tout << sizeof(v) << "\n";);
|
|
ENSURE(*(*v) == 10);
|
|
}
|
|
|
|
void tst_optional() {
|
|
tst1();
|
|
tst2();
|
|
tst3();
|
|
}
|
|
|