1 // Copyright (C) 2004-2018 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 <vector> 19 #include <testsuite_hooks.h> 20 21 struct T { int i; }; 22 23 int swap_calls; 24 25 namespace std 26 { 27 template<> 28 void swap(vector<T,allocator<T>> &)29 vector<T, allocator<T> >::swap(vector<T, allocator<T> >&) 30 { ++swap_calls; } 31 } 32 33 // Should use vector specialization for swap. test01()34void test01() 35 { 36 std::vector<T> A; 37 std::vector<T> B; 38 swap_calls = 0; 39 std::swap(A, B); 40 VERIFY(1 == swap_calls); 41 } 42 43 // Should use vector specialization for swap. test02()44void test02() 45 { 46 using namespace std; 47 vector<T> A; 48 vector<T> B; 49 swap_calls = 0; 50 swap(A, B); 51 VERIFY(1 == swap_calls); 52 } 53 54 // See c++/13658 for background info. main()55int main() 56 { 57 test01(); 58 test02(); 59 return 0; 60 } 61