assign.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& operator=(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& operator=(const test& t) 28 { 29 base::operator=(t); 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 return *this; 38 } 39 40 void setg(CharT* gbeg, CharT* gnext, CharT* gend) 41 { 42 base::setg(gbeg, gnext, gend); 43 } 44 void setp(CharT* pbeg, CharT* pend) 45 { 46 base::setp(pbeg, pend); 47 } 48}; 49 50int main() 51{ 52 { 53 test<char> t; 54 test<char> t2; 55 t2 = t; 56 } 57 { 58 test<wchar_t> t; 59 test<wchar_t> t2; 60 t2 = t; 61 } 62 { 63 char g1, g2, g3, p1, p3; 64 test<char> t; 65 t.setg(&g1, &g2, &g3); 66 t.setp(&p1, &p3); 67 test<char> t2; 68 t2 = t; 69 } 70 { 71 wchar_t g1, g2, g3, p1, p3; 72 test<wchar_t> t; 73 t.setg(&g1, &g2, &g3); 74 t.setp(&p1, &p3); 75 test<wchar_t> t2; 76 t2 = t; 77 } 78 std::locale::global(std::locale("en_US")); 79 { 80 test<char> t; 81 test<char> t2; 82 t2 = t; 83 } 84 { 85 test<wchar_t> t; 86 test<wchar_t> t2; 87 t2 = t; 88 } 89} 90