GDB (xrefs)
Loading...
Searching...
No Matches
gdb
unittests
optional
assignment
5.cc
Go to the documentation of this file.
1
// Copyright (C) 2013-2023 Free Software Foundation, Inc.
2
//
3
// This file is part of the GNU ISO C++ Library. This library is free
4
// software; you can redistribute it and/or modify it under the
5
// terms of the GNU General Public License as published by the
6
// Free Software Foundation; either version 3, or (at your option)
7
// any later version.
8
9
// This library is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
13
14
// You should have received a copy of the GNU General Public License along
15
// with this library; see the file COPYING3. If not see
16
// <http://www.gnu.org/licenses/>.
17
18
namespace
assign_5
{
19
20
static
int
counter
= 0;
21
22
struct
mixin_counter
23
{
24
mixin_counter
() { ++
counter
; }
25
mixin_counter
(
mixin_counter
const
&) { ++
counter
; }
26
~mixin_counter
() { --
counter
; }
27
};
28
29
struct
value_type
:
private
mixin_counter
{ };
30
31
static
void
32
test
()
33
{
34
using
O = gdb::optional<value_type>;
35
36
// Check std::nullopt_t and 'default' (= {}) assignment
37
38
#ifndef GDB_OPTIONAL
39
{
40
O o;
41
o = std::nullopt;
42
VERIFY
( !o );
43
}
44
#endif
45
46
#ifndef GDB_OPTIONAL
47
{
48
O o { gdb::in_place };
49
o = std::nullopt;
50
VERIFY
( !o );
51
}
52
#endif
53
54
#ifndef GDB_OPTIONAL
55
{
56
O o;
57
o = {};
58
VERIFY
( !o );
59
}
60
#endif
61
62
#ifndef GDB_OPTIONAL
63
{
64
O o { gdb::in_place };
65
o = {};
66
VERIFY
( !o );
67
}
68
#endif
69
{
70
gdb::optional<std::vector<int>> ovi{{1, 2, 3}};
71
VERIFY
(ovi->size() == 3);
72
VERIFY
((*ovi)[0] == 1 && (*ovi)[1] == 2 && (*ovi)[2] == 3);
73
ovi = {4, 5, 6, 7};
74
VERIFY
(ovi->size() == 4);
75
VERIFY
((*ovi)[0] == 4 && (*ovi)[1] == 5 &&
76
(*ovi)[2] == 6 && (*ovi)[3] == 7);
77
}
78
VERIFY
(
counter
== 0 );
79
}
80
81
}
// namespace assign_5
VERIFY
#define VERIFY(x)
assign_5
Definition
5.cc:18
assign_5::test
static void test()
Definition
5.cc:32
assign_5::counter
static int counter
Definition
5.cc:20
assign_5::mixin_counter
Definition
5.cc:23
assign_5::mixin_counter::~mixin_counter
~mixin_counter()
Definition
5.cc:26
assign_5::mixin_counter::mixin_counter
mixin_counter()
Definition
5.cc:24
assign_5::mixin_counter::mixin_counter
mixin_counter(mixin_counter const &)
Definition
5.cc:25
assign_5::value_type
Definition
5.cc:29
Generated by
1.9.7