1 |
693 |
jeremybenn |
// { dg-do compile }
|
2 |
|
|
// { dg-require-effective-target lto }
|
3 |
|
|
// { dg-options "-w -fpermissive -fno-implicit-templates -flto" }
|
4 |
|
|
|
5 |
|
|
namespace std {
|
6 |
|
|
typedef long unsigned int size_t;
|
7 |
|
|
template class allocator;
|
8 |
|
|
template struct char_traits;
|
9 |
|
|
template > class basic_ostream;
|
10 |
|
|
template, typename _Alloc = allocator<_CharT> > class basic_ostringstream;
|
11 |
|
|
}
|
12 |
|
|
extern "C++" {
|
13 |
|
|
namespace std {
|
14 |
|
|
class exception {
|
15 |
|
|
};
|
16 |
|
|
};
|
17 |
|
|
}
|
18 |
|
|
namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
|
19 |
|
|
template class new_allocator {
|
20 |
|
|
};
|
21 |
|
|
}
|
22 |
|
|
namespace std __attribute__ ((__visibility__ ("default"))) {
|
23 |
|
|
template class allocator: public __gnu_cxx::new_allocator<_Tp> {
|
24 |
|
|
public: typedef size_t size_type;
|
25 |
|
|
template struct rebind {
|
26 |
|
|
typedef allocator<_Tp1> other;
|
27 |
|
|
};
|
28 |
|
|
};
|
29 |
|
|
template class basic_string {
|
30 |
|
|
typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
|
31 |
|
|
typedef typename _CharT_alloc_type::size_type size_type;
|
32 |
|
|
private: struct _Rep_base {
|
33 |
|
|
};
|
34 |
|
|
struct _Rep : _Rep_base {
|
35 |
|
|
_CharT* _M_refdata() throw() {
|
36 |
|
|
}
|
37 |
|
|
};
|
38 |
|
|
struct _Alloc_hider : _Alloc {
|
39 |
|
|
_Alloc_hider(_CharT* __dat, const _Alloc& __a) : _Alloc(__a), _M_p(__dat) {
|
40 |
|
|
}
|
41 |
|
|
_CharT* _M_p;
|
42 |
|
|
};
|
43 |
|
|
private: mutable _Alloc_hider _M_dataplus;
|
44 |
|
|
static _Rep& _S_empty_rep() {
|
45 |
|
|
}
|
46 |
|
|
public: basic_string() : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) {
|
47 |
|
|
}
|
48 |
|
|
template basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a = _Alloc());
|
49 |
|
|
static _CharT* _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
|
50 |
|
|
};
|
51 |
|
|
template inline basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const basic_string<_CharT, _Traits, _Alloc>& __str) {
|
52 |
|
|
}
|
53 |
|
|
template template basic_string<_CharT, _Traits, _Alloc>:: basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) : _M_dataplus(_S_construct(__beg, __end, __a), __a) {
|
54 |
|
|
};
|
55 |
|
|
enum _Ios_Openmode {
|
56 |
|
|
_S_app = 1L << 0, _S_ate = 1L << 1, _S_bin = 1L << 2, _S_in = 1L << 3, _S_out = 1L << 4, _S_trunc = 1L << 5, _S_ios_openmode_end = 1L << 16 };
|
57 |
|
|
class ios_base {
|
58 |
|
|
public: class failure : public exception {
|
59 |
|
|
};
|
60 |
|
|
typedef _Ios_Openmode openmode;
|
61 |
|
|
static const openmode in = _S_in;
|
62 |
|
|
static const openmode out = _S_out;
|
63 |
|
|
};
|
64 |
|
|
template class basic_streambuf {
|
65 |
|
|
public: typedef _CharT char_type;
|
66 |
|
|
char_type* egptr() const {
|
67 |
|
|
}
|
68 |
|
|
char_type* pbase() const {
|
69 |
|
|
}
|
70 |
|
|
char_type* pptr() const {
|
71 |
|
|
}
|
72 |
|
|
};
|
73 |
|
|
template class basic_ios : public ios_base {
|
74 |
|
|
};
|
75 |
|
|
template class basic_ostream : virtual public basic_ios<_CharT, _Traits> {
|
76 |
|
|
};
|
77 |
|
|
template class basic_stringbuf : public basic_streambuf<_CharT, _Traits> {
|
78 |
|
|
public: typedef _CharT char_type;
|
79 |
|
|
typedef _Traits traits_type;
|
80 |
|
|
typedef basic_streambuf __streambuf_type;
|
81 |
|
|
typedef basic_string __string_type;
|
82 |
|
|
protected: ios_base::openmode _M_mode;
|
83 |
|
|
__string_type _M_string;
|
84 |
|
|
public: explicit basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out) : __streambuf_type(), _M_mode(__mode), _M_string() {
|
85 |
|
|
}
|
86 |
|
|
__string_type str() const {
|
87 |
|
|
__string_type __ret;
|
88 |
|
|
if (this->pptr()) {
|
89 |
|
|
if (this->pptr() > this->egptr()) __ret = __string_type(this->pbase(), this->pptr());
|
90 |
|
|
}
|
91 |
|
|
}
|
92 |
|
|
};
|
93 |
|
|
template class basic_ostringstream : public basic_ostream<_CharT, _Traits> {
|
94 |
|
|
public: typedef _CharT char_type;
|
95 |
|
|
typedef _Traits traits_type;
|
96 |
|
|
typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
|
97 |
|
|
typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
|
98 |
|
|
typedef basic_ostream __ostream_type;
|
99 |
|
|
private: __stringbuf_type _M_stringbuf;
|
100 |
|
|
public: explicit basic_ostringstream(ios_base::openmode __mode = ios_base::out) : __ostream_type(), _M_stringbuf(__mode | ios_base::out) {
|
101 |
|
|
}
|
102 |
|
|
__string_type str() const {
|
103 |
|
|
return _M_stringbuf.str();
|
104 |
|
|
}
|
105 |
|
|
};
|
106 |
|
|
template class complex;
|
107 |
|
|
template basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x) {
|
108 |
|
|
basic_ostringstream<_CharT, _Traits> __s;
|
109 |
|
|
return __os << __s.str();
|
110 |
|
|
};
|
111 |
|
|
template basic_ostream >& operator<<(basic_ostream >&, const complex&);
|
112 |
|
|
}
|