1 // Copyright (C) 2014-2021 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 #include <tr1/functional> 19 #include <stdexcept> 20 #include <testsuite_hooks.h> 21 22 struct functor 23 { functorfunctor24 functor() : copies(0) { } 25 functorfunctor26 functor(const functor& f) 27 : copies(f.copies + 1) 28 { 29 if (copies > 1) 30 throw std::runtime_error("functor"); 31 } 32 operator ()functor33 void operator()() const { } 34 35 int copies; 36 }; 37 38 39 void test01()40test01() 41 { 42 std::tr1::function<void()> f = functor(); 43 try { 44 std::tr1::function<void()> g = f; 45 } catch (const std::runtime_error& e) { 46 return; 47 } 48 VERIFY(false); 49 } 50 51 int main()52main() 53 { 54 test01(); 55 } 56