types.pass.cpp revision c0d0cbad9ed434267a7af9531bdeeae52eb6d706
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <locale>
11
12// template <class charT>
13// class collate_byname
14//     : public collate<charT>
15// {
16// public:
17//     typedef basic_string<charT> string_type;
18//     explicit collate_byname(const char*, size_t refs = 0);
19//     explicit collate_byname(const string&, size_t refs = 0);
20// protected:
21//     ~collate_byname();
22// };
23
24#include <locale>
25#include <string>
26#include <cassert>
27
28#include <stdio.h>
29
30#include "../../../../platform_support.h" // locale name macros
31
32int main()
33{
34    std::locale l(LOCALE_en_US_UTF_8);
35    {
36        assert(std::has_facet<std::collate_byname<char> >(l));
37        assert(&std::use_facet<std::collate<char> >(l)
38            == &std::use_facet<std::collate_byname<char> >(l));
39    }
40    {
41        assert(std::has_facet<std::collate_byname<wchar_t> >(l));
42        assert(&std::use_facet<std::collate<wchar_t> >(l)
43            == &std::use_facet<std::collate_byname<wchar_t> >(l));
44    }
45}
46