brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 5aaad27 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// REQUIRES: has-unix-headers10// UNSUPPORTED: c++03, libcpp-hardening-mode=none11// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing12 13// <streambuf>14 15// template <class charT, class traits = char_traits<charT> >16// class basic_streambuf;17 18// void setp(char_type* pbeg, char_type* pend);19 20#include <algorithm>21#include <iterator>22#include <streambuf>23#include <string>24 25#include "check_assertion.h"26#include "make_string.h"27#include "test_macros.h"28 29template <class CharT>30struct streambuf : public std::basic_streambuf<CharT> {31  typedef std::basic_streambuf<CharT> base;32 33  streambuf() {}34 35  void setp(CharT* pbeg, CharT* pend) { base::setp(pbeg, pend); }36};37 38template <class CharT>39void test() {40  std::basic_string<CharT> str = MAKE_STRING(CharT, "ABCDEF");41  CharT arr[6];42  std::copy(str.begin(), str.end(), arr);43 44  {45    streambuf<CharT> buff;46    TEST_LIBCPP_ASSERT_FAILURE(buff.setp(std::begin(arr) + 3, std::begin(arr)), "[pbeg, pend) must be a valid range");47  }48}49 50int main(int, char**) {51  test<char>();52#ifndef TEST_HAS_NO_WIDE_CHARACTERS53  test<wchar_t>();54#endif55 56  return 0;57}58