types.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//===----------------------------------------------------------------------===//
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ��������������������The LLVM Compiler Infrastructure
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// This file is distributed under the University of Illinois Open Source
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// License. See LICENSE.TXT for details.
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//===----------------------------------------------------------------------===//
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// <locale>
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// template <>
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// class ctype<char>
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//     : public locale::facet,
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//       public ctype_base
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// {
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// public:
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//     typedef char char_type;
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// };
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <locale>
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <type_traits>
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <cassert>
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint main()
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    std::locale l = std::locale::classic();
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    {
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        assert(std::has_facet<std::ctype<char> >(l));
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        const std::ctype<char>& f = std::use_facet<std::ctype<char> >(l);
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        {
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            (void)std::ctype<char>::id;
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        static_assert((std::is_same<std::ctype<char>::char_type, char>::value), "");
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        static_assert((std::is_base_of<std::ctype_base, std::ctype<char> >::value), "");
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        static_assert((std::is_base_of<std::locale::facet, std::ctype<char> >::value), "");
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org