1// Copyright (C) 2001-2015 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// 23.2.2.1 list constructors, copy, and assignment 19 20#include <testsuite_hooks.h> 21 22// A nontrivial type. 23template<typename T> 24 struct A { }; 25 26// Another nontrivial type 27struct B { }; 28 29// Default constructor, basic properties 30// 31// This test verifies the following. 32// 23.2.2.1 explicit list(const a& = Allocator()) 33// 23.1 (7) iterator behaviour of empty containers 34// 23.2.2 iterator begin() 35// 23.2.2 iterator end() 36// 23.2.2 size_type size() const 37// 23.2.2 existence of required typedefs 38// 39template<typename _Tp> 40void 41cons01() 42{ 43 bool test __attribute__((unused)) = true; 44 typedef _Tp list_type; 45 46 list_type list0101; 47 VERIFY(list0101.begin() == list0101.end()); 48 VERIFY(list0101.size() == 0); 49 50 // check type definitions -- will fail compile if missing 51 typedef typename list_type::reference reference; 52 typedef typename list_type::const_reference const_reference; 53 typedef typename list_type::iterator iterator; 54 typedef typename list_type::const_iterator const_iterator; 55 typedef typename list_type::size_type size_type; 56 typedef typename list_type::difference_type difference_type; 57 typedef typename list_type::value_type value_type; 58 typedef typename list_type::allocator_type allocator_type; 59 typedef typename list_type::pointer pointer; 60 typedef typename list_type::const_pointer const_pointer; 61 typedef typename list_type::reverse_iterator reverse_iterator; 62 typedef typename list_type::const_reverse_iterator const_reverse_iterator; 63} 64