1// { dg-options "-std=gnu++14" } 2// { dg-do run } 3 4// Copyright (C) 2013-2015 Free Software Foundation, Inc. 5// 6// This file is part of the GNU ISO C++ Library. This library is free 7// software; you can redistribute it and/or modify it under the 8// terms of the GNU General Public License as published by the 9// Free Software Foundation; either version 3, or (at your option) 10// any later version. 11 12// This library is distributed in the hope that it will be useful, 13// but WITHOUT ANY WARRANTY; without even the implied warranty of 14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15// GNU General Public License for more details. 16 17// You should have received a copy of the GNU General Public License along 18// with this library; see the file COPYING3. If not see 19// <http://www.gnu.org/licenses/>. 20 21#include <experimental/optional> 22#include <testsuite_hooks.h> 23 24struct tracker 25{ 26 tracker() { ++count; } 27 ~tracker() { --count; } 28 29 tracker(tracker const&) { ++count; } 30 tracker(tracker&&) { ++count; } 31 32 tracker& operator=(tracker const&) = default; 33 tracker& operator=(tracker&&) = default; 34 35 static int count; 36}; 37 38int tracker::count = 0; 39 40int main() 41{ 42 // [20.5.4.1] Constructors 43 44 { 45 std::experimental::optional<tracker> o; 46 VERIFY( !o ); 47 } 48 49 { 50 std::experimental::optional<tracker> o {}; 51 VERIFY( !o ); 52 } 53 54 { 55 std::experimental::optional<tracker> o = {}; 56 VERIFY( !o ); 57 } 58 59 VERIFY( tracker::count == 0 ); 60} 61