brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 33dbeb9 Raw
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