59 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// UNSUPPORTED: c++039 10// <regex>11 12// class match_results<BidirectionalIterator, Allocator>13 14// match_results& operator=(match_results&& m);15 16#include <regex>17#include <cassert>18#include "test_macros.h"19#include "test_allocator.h"20 21template <class CharT, class Allocator>22void23test(const Allocator& a)24{25 typedef std::match_results<const CharT*, Allocator> SM;26 SM m0(a);27 SM m1;28 29 m1 = std::move(m0);30 assert(m1.size() == 0);31 assert(!m1.ready());32 if (std::allocator_traits<Allocator>::propagate_on_container_move_assignment::value)33 assert(m1.get_allocator() == a);34 else35 assert(m1.get_allocator() == Allocator());36}37 38int main(int, char**)39{40 test<char> (std::allocator<std::sub_match<const char *> >());41#ifndef TEST_HAS_NO_WIDE_CHARACTERS42 test<wchar_t>(std::allocator<std::sub_match<const wchar_t *> >());43#endif44 45 // test_allocator has POCMA -> false46 test<char> (test_allocator<std::sub_match<const char*> >(3));47#ifndef TEST_HAS_NO_WIDE_CHARACTERS48 test<wchar_t>(test_allocator<std::sub_match<const wchar_t*> >(3));49#endif50 51 // other_allocator has POCMA -> true52 test<char> (other_allocator<std::sub_match<const char*> >(3));53#ifndef TEST_HAS_NO_WIDE_CHARACTERS54 test<wchar_t>(other_allocator<std::sub_match<const wchar_t*> >(3));55#endif56 57 return 0;58}59