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