1// 2001-08-23  Benjamin Kosnik  <bkoz@redhat.com>
2
3// Copyright (C) 2001 Free Software Foundation
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 2, 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 COPYING.  If not, write to the Free
18// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19// USA.
20
21// 22.2.6.3  Template class moneypunct
22
23// { dg-do compile }
24
25#include <locale>
26#include <testsuite_hooks.h>
27
28void test01()
29{
30  // Check for required base class.
31  typedef std::moneypunct<char, true> test_type;
32  typedef std::locale::facet base_type;
33  const test_type& obj = std::use_facet<test_type>(std::locale());
34  const base_type* base = &obj;
35
36  // Check for required typedefs
37  typedef test_type::char_type char_type;
38  typedef test_type::string_type string_type;
39}
40
41void test02()
42{
43  // Check for required base class.
44  typedef std::moneypunct<char, false> test_type;
45  typedef std::locale::facet base_type;
46  const test_type& obj = std::use_facet<test_type>(std::locale());
47  const base_type* base = &obj;
48
49  // Check for required typedefs
50  typedef test_type::char_type char_type;
51  typedef test_type::string_type string_type;
52}
53
54// Should be able to instantiate this for other types besides char, wchar_t
55class gnu_moneypunct_t: public std::moneypunct<unsigned char, true>
56{ };
57
58class gnu_moneypunct_f: public std::moneypunct<unsigned char, false>
59{ };
60
61void test03()
62{
63  gnu_moneypunct_t facet01;
64  gnu_moneypunct_f facet02;
65  VERIFY (facet01.intl == true);
66  VERIFY (facet02.intl == false);
67}
68
69int main()
70{
71  test01();
72  test02();
73  test03();
74  return 0;
75}
76