18c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//===----------------------------------------------------------------------===//
28c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//
38c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//                     The LLVM Compiler Infrastructure
48c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
78c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//
88c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//===----------------------------------------------------------------------===//
98c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant
108c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant// <regex>
118c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant
128c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant// template <class charT, class traits = regex_traits<charT>>
138c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant// class basic_regex
148c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant// {
158c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant// public:
168c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     // constants:
178c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type icase = regex_constants::icase;
188c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type nosubs = regex_constants::nosubs;
198c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type optimize = regex_constants::optimize;
208c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type collate = regex_constants::collate;
218c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type ECMAScript = regex_constants::ECMAScript;
228c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type basic = regex_constants::basic;
238c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type extended = regex_constants::extended;
248c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type awk = regex_constants::awk;
258c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type grep = regex_constants::grep;
268c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant//     static constexpr regex_constants::syntax_option_type egrep = regex_constants::egrep;
278c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant
288c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant#include <regex>
298c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant#include <type_traits>
308c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant
310a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnanttemplate <class _Tp>
320a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnantvoid where(const _Tp &) {}
330a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant
348c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnanttemplate <class CharT>
358c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnantvoid
368c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnanttest()
378c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant{
388c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    typedef std::basic_regex<CharT> BR;
398c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::icase == std::regex_constants::icase), "");
408c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::nosubs == std::regex_constants::nosubs), "");
418c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::optimize == std::regex_constants::optimize), "");
428c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::collate == std::regex_constants::collate), "");
438c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::ECMAScript == std::regex_constants::ECMAScript), "");
448c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::basic == std::regex_constants::basic), "");
458c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::extended == std::regex_constants::extended), "");
468c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::awk == std::regex_constants::awk), "");
478c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::grep == std::regex_constants::grep), "");
488c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    static_assert((BR::egrep == std::regex_constants::egrep), "");
490a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::icase);
500a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::nosubs);
510a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::optimize);
520a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::collate);
530a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::ECMAScript);
540a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::basic);
550a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::extended);
560a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::awk);
570a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::grep);
580a69fa14d2f0521e45a72068c14fe573b140d48bHoward Hinnant    where(BR::egrep);
598c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant}
608c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant
618c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnantint main()
628c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant{
638c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    test<char>();
648c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant    test<wchar_t>();
658c2c18d57ced35ef97f2e97d426a8c334093c4b3Howard Hinnant}
66