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