58 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <regex>10 11// class match_results<BidirectionalIterator, Allocator>12 13// match_results& operator=(const match_results& m);14 15#include <regex>16#include <cassert>17#include "test_macros.h"18#include "test_allocator.h"19 20template <class CharT, class Allocator>21void22test(const Allocator& a)23{24 typedef std::match_results<const CharT*, Allocator> SM;25 SM m0(a);26 SM m1;27 28 m1 = m0;29 assert(m1.size() == m0.size());30 assert(m1.ready() == m0.ready());31 if (std::allocator_traits<Allocator>::propagate_on_container_copy_assignment::value)32 assert(m1.get_allocator() == m0.get_allocator());33 else34 assert(m1.get_allocator() == Allocator());35}36 37int main(int, char**)38{39 test<char> (std::allocator<std::sub_match<const char *> >());40#ifndef TEST_HAS_NO_WIDE_CHARACTERS41 test<wchar_t>(std::allocator<std::sub_match<const wchar_t *> >());42#endif43 44 // test_allocator has POCCA -> false45 test<char> (test_allocator<std::sub_match<const char*> >(3));46#ifndef TEST_HAS_NO_WIDE_CHARACTERS47 test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));48#endif49 50 // other_allocator has POCCA -> true51 test<char> (other_allocator<std::sub_match<const char*> >(3));52#ifndef TEST_HAS_NO_WIDE_CHARACTERS53 test<wchar_t>(other_allocator<std::sub_match<const wchar_t*> >(3));54#endif55 56 return 0;57}58