1 // Copyright (C) 2013-2020 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 cons_default { 19 20 struct tracker 21 { 22 tracker() { ++count; } 23 ~tracker() { --count; } 24 25 tracker(tracker const&) { ++count; } 26 tracker(tracker&&) { ++count; } 27 28 tracker& operator=(tracker const&) = default; 29 tracker& operator=(tracker&&) = default; 30 31 static int count; 32 }; 33 34 int tracker::count = 0; 35 36 static void 37 test () 38 { 39 // [20.5.4.1] Constructors 40 41 { 42 gdb::optional<tracker> o; 43 VERIFY( !o ); 44 } 45 46 { 47 gdb::optional<tracker> o {}; 48 VERIFY( !o ); 49 } 50 51 { 52 gdb::optional<tracker> o = {}; 53 VERIFY( !o ); 54 } 55 56 VERIFY( tracker::count == 0 ); 57 } 58 59 } // namespace cons_default 60