//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <regex> // template <class BidirectionalIterator, // class charT = typename iterator_traits< BidirectionalIterator>::value_type, // class traits = regex_traits<charT>> // class regex_token_iterator // { // public: // typedef basic_regex<charT, traits> regex_type; // typedef sub_match<BidirectionalIterator> value_type; // typedef ptrdiff_t difference_type; // typedef const value_type* pointer; // typedef const value_type& reference; // typedef forward_iterator_tag iterator_category; #include <regex> #include <type_traits> template <class CharT> void test() { typedef std::regex_token_iterator<const CharT*> I; static_assert((std::is_same<typename I::regex_type, std::basic_regex<CharT> >::value), ""); static_assert((std::is_same<typename I::value_type, std::sub_match<const CharT*> >::value), ""); static_assert((std::is_same<typename I::difference_type, std::ptrdiff_t>::value), ""); static_assert((std::is_same<typename I::pointer, const std::sub_match<const CharT*>*>::value), ""); static_assert((std::is_same<typename I::reference, const std::sub_match<const CharT*>&>::value), ""); static_assert((std::is_same<typename I::iterator_category, std::forward_iterator_tag>::value), ""); } int main() { test<char>(); test<wchar_t>(); }