annotate gcc/testsuite/g++.dg/opt/pr50747-2_0.C @ 131:84e7813d76e9

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