types.pass.cpp revision 22a74dcf50ff4338767607fa5a9d2916c2c85525
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <locale>
11
12// template <class CharT>
13// class ctype_byname
14//     : public ctype<CharT>
15// {
16// public:
17//     explicit ctype_byname(const char*, size_t = 0);
18//     explicit ctype_byname(const string&, size_t = 0);
19//
20// protected:
21//     ~ctype_byname();
22// };
23
24#include <locale>
25#include <type_traits>
26#include <cassert>
27
28int main()
29{
30    {
31        std::locale l("en_US");
32        {
33            assert(std::has_facet<std::ctype_byname<char> >(l));
34            assert(&std::use_facet<std::ctype<char> >(l)
35                == &std::use_facet<std::ctype_byname<char> >(l));
36        }
37        {
38            assert(std::has_facet<std::ctype_byname<wchar_t> >(l));
39            assert(&std::use_facet<std::ctype<wchar_t> >(l)
40                == &std::use_facet<std::ctype_byname<wchar_t> >(l));
41        }
42    }
43    {
44        std::locale l("");
45        {
46            assert(std::has_facet<std::ctype_byname<char> >(l));
47            assert(&std::use_facet<std::ctype<char> >(l)
48                == &std::use_facet<std::ctype_byname<char> >(l));
49        }
50        {
51            assert(std::has_facet<std::ctype_byname<wchar_t> >(l));
52            assert(&std::use_facet<std::ctype<wchar_t> >(l)
53                == &std::use_facet<std::ctype_byname<wchar_t> >(l));
54        }
55    }
56    {
57        std::locale l("C");
58        {
59            assert(std::has_facet<std::ctype_byname<char> >(l));
60            assert(&std::use_facet<std::ctype<char> >(l)
61                == &std::use_facet<std::ctype_byname<char> >(l));
62        }
63        {
64            assert(std::has_facet<std::ctype_byname<wchar_t> >(l));
65            assert(&std::use_facet<std::ctype<wchar_t> >(l)
66                == &std::use_facet<std::ctype_byname<wchar_t> >(l));
67        }
68    }
69}
70