copy.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <streambuf> 11 12// template <class charT, class traits = char_traits<charT> > 13// class basic_streambuf; 14 15// basic_streambuf(const basic_streambuf& rhs); 16 17#include <streambuf> 18#include <cassert> 19 20template <class CharT> 21struct test 22 : public std::basic_streambuf<CharT> 23{ 24 typedef std::basic_streambuf<CharT> base; 25 test() {} 26 27 test(const test& t) 28 : std::basic_streambuf<CharT>(t) 29 { 30 assert(this->eback() == t.eback()); 31 assert(this->gptr() == t.gptr()); 32 assert(this->egptr() == t.egptr()); 33 assert(this->pbase() == t.pbase()); 34 assert(this->pptr() == t.pptr()); 35 assert(this->epptr() == t.epptr()); 36 assert(this->getloc() == t.getloc()); 37 } 38 39 void setg(CharT* gbeg, CharT* gnext, CharT* gend) 40 { 41 base::setg(gbeg, gnext, gend); 42 } 43 void setp(CharT* pbeg, CharT* pend) 44 { 45 base::setp(pbeg, pend); 46 } 47}; 48 49int main() 50{ 51 { 52 test<char> t; 53 test<char> t2 = t; 54 } 55 { 56 test<wchar_t> t; 57 test<wchar_t> t2 = t; 58 } 59 { 60 char g1, g2, g3, p1, p3; 61 test<char> t; 62 t.setg(&g1, &g2, &g3); 63 t.setp(&p1, &p3); 64 test<char> t2 = t; 65 } 66 { 67 wchar_t g1, g2, g3, p1, p3; 68 test<wchar_t> t; 69 t.setg(&g1, &g2, &g3); 70 t.setp(&p1, &p3); 71 test<wchar_t> t2 = t; 72 } 73 std::locale::global(std::locale("en_US")); 74 { 75 test<char> t; 76 test<char> t2 = t; 77 } 78 { 79 test<wchar_t> t; 80 test<wchar_t> t2 = t; 81 } 82} 83