[C++ PATCH] Deprecate -ffriend-injection
[official-gcc.git] / gcc / testsuite / g++.dg / lto / 20091002-1_0.C
bloba59a0cb9505dc6c10e5f30ba9655a059d7030e56
1 // { dg-lto-do link }
2 // { dg-require-effective-target fpic }
3 // { dg-lto-options {{-fPIC -flto -Wno-return-type}} }
4 // { dg-extra-ld-options "-fPIC -r -nostdlib" }
6 namespace std __attribute__ ((__visibility__ ("default")))
8   template<class _CharT>     struct char_traits;
9   template<typename _CharT, typename _Traits = char_traits<_CharT> >
10       class basic_ostream;
11   template<typename _CharT, typename _Traits = char_traits<_CharT> >
12       class istreambuf_iterator;
13   typedef basic_ostream<char> ostream;
14   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
15       class num_get;
16   class locale   {
17       class facet;
18   };
19   class locale::facet   {
20   };
21   enum _Ios_Iostate { _S_beg = 0, _S_cur = 1, _S_end = 2,
22       _S_ios_seekdir_end = 1L << 16     };
23   class ios_base   {
24   public:
25       typedef _Ios_Iostate iostate;
26   };
27   template<typename _CharT, typename _InIter>
28       class num_get : public locale::facet     {
29           typedef _InIter iter_type;
30           template<typename _ValueT> iter_type
31               _M_extract_int(iter_type, iter_type, ios_base&,
32                              ios_base::iostate&, _ValueT&) const;
33           virtual iter_type
34               do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
35       };
36   extern template class num_get<char>;
37   template<typename _CharT, typename _Traits>
38       class basic_ios : public ios_base     {
39           typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
40               __num_get_type;
41           const __num_get_type* _M_num_get;
42       };
43   template<typename _CharT, typename _Traits>
44       class basic_ostream : virtual public basic_ios<_CharT, _Traits>     {
45       public:
46           typedef basic_ostream<_CharT, _Traits> __ostream_type;
47           __ostream_type&       operator<<(double __f)       { }
48       };
49   typedef double Real;
50   class Vector {
51   public:
52       Real operator[](int n) const    { }
53   };
54   std::ostream& operator<<(std::ostream& s, const Vector& vec)
55     {
56       int i;
57       s << vec[i] << ')';
58     }