1// { dg-options "-std=gnu++11" } 2 3// Copyright (C) 2008-2015 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// You should have received a copy of the GNU General Public License along 17// with this library; see the file COPYING3. If not see 18// <http://www.gnu.org/licenses/>. 19 20// 23.2.3.n forward_list xxx [lib.forward_list.xxx] 21 22#include <forward_list> 23#include <testsuite_hooks.h> 24 25bool test __attribute__((unused)) = true; 26 27// This test verifies the following: 28// unique 29void 30test01() 31{ 32 std::forward_list<int> fl = {99, 5, 99, 6, -5, 666, 777, 888, 33 42, 42, 42, 42, 42, 7, 0, 0, 0, 9, 9, 9}; 34 35 fl.unique(); 36 37 std::forward_list<int> fl2 = {99, 5, 99, 6, -5, 666, 777, 888, 42, 7, 0, 9}; 38 VERIFY(fl == fl2); 39} 40 41// Test comparison predicate. 42template<typename Num> 43 class Mod 44 { 45 public: 46 Mod(const Num & mod) 47 { 48 m = mod; 49 } 50 bool operator()(const Num i, const Num j) 51 { 52 return i%m == j%m; 53 } 54 private: 55 Num m; 56 }; 57 58// This test verifies the following: 59// unique with predicate 60void 61test02() 62{ 63 std::forward_list<int> fl = {99, 5, 99, 6, -5, 666, 777, 888, 42, 7, 0, 9}; 64 65 fl.unique(Mod<int>(111)); 66 67 std::forward_list<int> fl2 = {99, 5, 99, 6, -5, 666, 42, 7, 0, 9}; 68 VERIFY(fl == fl2); 69} 70 71int 72main() 73{ 74 test01(); 75 test02(); 76 return 0; 77} 78